2013-09-26 83 views
0

我有一個指令可以在表中創建一行。然後我用NG-重複遍歷的項目列表填充表與指令行,例如:以角度js綁定到子作用域的值

<tr ng-repeat='item in items' rowItem='item' /> 

我具有限定範圍的問題。 我不能使用scope: false,因爲它不會分隔rowItem值。 我希望能夠綁定到rowItem值,所以使用了一個獨立的作用域:scope:{rowItem: '='},它可以按我的要求工作,但我仍然希望可以訪問父級作用域值。

所以最好的選擇是scope: true但是,我不能將範圍綁定到行項目。 我嘗試使用attrs.$observe('rowItem', ...),但是當項目列表發生更改時,由於rowItem不是插值屬性,所以這不會觸發。

有沒有辦法使用一個新的子範圍(scope: true)可以綁定到一個屬性(就像它在孤立的範圍內)?

+0

'你喜歡這個scope.watch(attrs.rowItem,功能)觀察員' – Chandermani

+0

謝謝,我已經試過了但工作方式相同ATTRS。$觀察,只有更新時的屬性值的變化,而不是插值變化。 – Theo

回答

0

我創建了一個fiddle來嘗試複製該問題,但看起來子範圍(scope: true)正在像隔離範圍那樣定期更新。我必須有另一個問題導致$觀察不能定期開火。

0

$observe不在範圍內使用,它可在attrs

link: function(scope, elements, attrs){ 
    attrs.$observe('rowItem', ...) 
} 
+0

謝謝,但那只是一個錯字。 – Theo

2

我創建了一個working CodePen example應該給你你正在尋找的答案。

訣竅是使用範圍。$ eval(...),我在我的例子中演示。我還想指出,看起來你可能會試圖誤用一些指令,但不知道更多關於確切的要求,我只是給你一個答案。根據您提供的示例的簡單性,您可以在沒有自定義指令的情況下完成您的要求。

+0

感謝您的回答,我也使用了$ eval,但我認爲觀察並未在項目更改時觸發。我創建了一個小提琴來嘗試重新創建問題,但事實證明,當物品發生變化時會調用$ observe,但由於某種原因,它不適合我。 – Theo