我有一個場景,我希望執行的表達式動態加載到組件中。我無法將表達式設置爲v-if
,因爲它是一個文字字符串,而不是實際的綁定表達式。以編程方式創建綁定表達式
我看了一下使用vm.$watch
但是表達式只允許是點符號路徑,而不是單個javascript表達式。
vm.$watch
用法:在Vue實例上觀察表達式或計算的函數以進行更改。回調被調用新值和舊值。該表達式只接受簡單的由點分隔的路徑。對於更復雜的表達式,請使用函數。
是否有一些vuejs的一部分,我可以用來實現這一目標?我假設v-if
指令等的綁定表達式最終是在給定的上下文中被解析和評估的字符串,它只是這些函數是否可用於組件?
希望下面這個例子說明了什麼,我試圖實現更完整的畫面:
<template>
<div>
<div v-if="expression"></div>
</div>
</template>
<script>
export default {
name: 'mycomponent'
data: function() {
var1: 5,
var2: 7,
expression: null
},
created: function() {
this.$http.get('...').then((response) => {
// Sample response:
// {
// 'expression' : 'var1 > var2'
// }
// TODO: Not this!!
this.expression= response.expression;
});
}
}
</script>
謝謝你的建議。我正在嘗試(如下面的@ roy-j所述)以避免使用eval,因爲它是_quote:通常不是很好的JavaScript_。目前我已決定使用[鏈接](https://github.com/peerigon/angular-expressions),它提供了一定程度的安全性(儘管不是防彈的,我認爲可能是對eval的改進)。 – user2455157