2017-07-30 66 views
1

我讀過VueJs文檔,它建議使用computed屬性來計算或切換一個元素類,但我無法在v-for循環內執行該操作。我做了什麼,而不是是這樣的:在v-for內切換VueJs2的元素類,這是否正確?

模板

<li v-bind:click="onClick(word)" v-bind:class="calculateClass(word)" v-for="word in words">{{ word.name }}</li> 

代碼

data: { 
    words : [{name:'ali', clicked : 1},{name:'sara', clicked : 0},{name:'marya', clicked : 1}] 
}, 

methods: { 
    calculateClass : function (word) { 
    return { 
     "classA": word.clicked=== 1, 
     "classB" : word.clicked === 0, 
     'test' : true // allways return 'test' class 
    } 
    }, 

    onClick: function (word) { 
    // changing the `clicked` property of related object in this.words array 
    for (var i in this.words) { 
     if (this.words[i].name === word.name) { 
     this.$set(this.words[i], 'clicked', 1) 
     break; //Stop this loop, we found it! 
     } 
    } 
    } 
}, 

這是工作,但有一個問題,這種做法?我沒有看到其他使用方法計算類的例子。我應該這樣做與computed?怎麼樣?有沒有更好的辦法?

回答

1

你是正確的,一個計算屬性不能接受一個參數,因此,在這種情況下,不適合。

按照自己的方式使用方法沒有任何問題。