I am very new with VueJS so my question is very simple. I cannot use vue filter. Please help me fix the problem. My html file is shown as followed. When I try this code the item in v-for can't be shown and also the it has error Failed to resolve filter: uppercase. Can any one tell me why?
<div id="pan" class="pan">
<div v-for="item in list|orderBy 'level'" >{{item.id}}</div>
<span>{{message | uppercase}}</span>
</div>
<script type="text/javascript" src="https://unpkg.com/vue/dist/vue.js"></script>
<script type="text/javascript">
var pan = new Vue({
el: '#pan',
data: {
list: [
{ name: '東京', id:"TOKYO",level:"2"},
{ name: '全国',id:"JAPAN",level:"1" },
{ name: '関東',id:"KANTO",level:"0" },
],
message:"hello"
}
});
</script>
You can use a computed property.
Markup:
Definition inside of Vue:
And then you can change order of the elements in
orderedList
by modifyingsortKey
(usingv-model="sortKey"
to any kind of input, like<select></select>
or any other way).Here is an example based on your code
And what about uppercase, I prefer to control a view with css, and text-transform property can solve this:
.pan__title { text-transform: uppercase; }
. But you can define a computed property for this one too or keep it inline with{{ message.toUpperCase() }}
.If you are using vuejs2, with vuejs2 uppercase filter has been removed. You will have to use toUpperCase() for this, like following:
see demo.
Similarly orderBy filter also has been removed, vuejs2 suggests to use lodash’s orderBy (or possibly sortBy) in a computed property:
HTML
vue
Here is demo with orderBy.