0
我希望我的表根據值是否爲null來有條件地呈現其行。這些行有不同的自定義條目和標籤,這就是爲什麼我不能只使用ng-repeat。這裏是代碼:評估角度指令中的表達式
<table>
<thead>
</thead>
<tbody>
<tr ng-show = "{{data.entry_1}} !== null">
<td>Custom Label 1</td>
<td>{{data.entry_1}}</td>
</tr>
<tr ng-show = "{{data.entry_2}} !== null">
<td>Custom Label 2</td>
<td>{{data.entry_2}}</td>
</tr>
.
.
.
<tr ng-show = "{{data.entry_n}} !== null">
<td>Custom Label n</td>
<td>{{data.entry_n}}</td>
</tr>
</tbody>
</table>
但是,看起來這種方式是不正確的。它可能是javascript(編譯器)在ng-show中的{{}}或'!== null'抱怨或者可能都是。如何評估ng-指令中的角度表達式(在{{}}中?
我知道我也可以在js文件中對此進行評估,但由於我不想添加更多的範圍變量(爲了使代碼更清晰),我選擇評估它是否在ng-顯示指令。有人能告訴我該怎麼做嗎?
謝謝。
您正在使用表達式語言以錯誤的方式,空條件應該是表達,即'{{data.entry_2!== NULL}}'順便說一句,你仍然可以使用內如果自定義實體具有如您的示例中給出的索引,則有條件地呈現行中的ng-repeat。例如{{data ['entry_'+($ index + 1)]!== null}}可以使你的代碼簡潔。但是,當然如果屬性具有隨機名稱,這種方法將不起作用。 – cubbuk 2014-10-16 12:34:09
在ng-show中不需要{{}},你可以用一個函數來做到這一點。例如ng-show ='calculate(0)'返回true或false。考慮可重複使用的代碼,所以你不需要重複!== null每次,你可以很容易地將null更改爲false,例如,如果你的情況發生變化 – 2014-10-16 12:44:07
@cubbuk它很奇怪。當我使用'ng-show =「false」'時,chrome開發工具顯示另一個屬性'display:none'。如果它只是'
回答
你就近了。花括號只需要回顯/打印/渲染變量的值。在一個表達式中,你不應該使用大括號。
來源
2014-10-16 12:46:26 Martin
另一個問題,如果讓我們說變量'設備',從來就不是數據的值,因爲JavaScript文件沒有爲數據分配或初始化這樣的變量(即設備不存在於數據中),是否足以比較' data.device!== null'獲得「真實」或「虛假」? – menorah84 2014-10-16 13:21:41
我已更新我的示例包含此問題。我建議閱讀有關Angular Expressions的文檔。您不需要評估「data.device!== null」。 「data.device」就足夠了。 NG表達比JS更寬容。如果屬性未定義,或者父對象未定義,則表達式將被評估爲false。 – Martin 2014-10-16 13:46:53
在指令中作用域的上下文中使用$ compile服務。
見https://docs.angularjs.org/api/ng/service/ $編譯
編輯:我同意馬丁的回答。
來源
2014-10-16 12:33:20 skewl84
我覺得這個問題有點矯枉過正。在動態加載DOM的情況下,也許。 – Vojtiik 2014-10-16 12:44:06
創建指令來評估表達式會適得其反。 ngShow指令就足夠了。 – Martin 2014-10-16 12:50:40
相關問題