2015-04-12 57 views
2

所以我試圖綁定一個指令(外部訪問)到ng-repeat內部的模型中。因此,在外部控制器我有一個變量,我想結合在像AngularJS,綁定到ng-repeat中的模型

//in the directive scope 
filterArray: '=' 

指令內,將指令內被綁定到一個模型中的NG-重複像這樣 -

//inside the directive 
<li ng-repeat="value in filter.values"> 
     <input type="checkbox" ng-model="filterObject[filter.name][value]" ng-change="filterChange()">{{value}} 
    </li> 

這工作正常,直到我改變指令有一個隔離範圍,現在它說不能設置未定義的屬性。有什麼方法可以按預期工作嗎?這個想法是,當用戶點擊輸入時,變量會生成,所以外部控制器將能夠看到構建的對象。

道歉,如果這有點令人困惑 - 我已經做了一個小提示澄清:https://jsfiddle.net/vt1uasw7/42/

我希望外部控制器能夠訪問通過綁定模型構建的對象 - 在添加隔離範圍之前,這仍然有效。謝謝!

編輯:也許在這種情況下的訣竅是不使用隔離範圍?這其中有我難住了,我已經試過的範圍每一個屬性組合:(

+0

我在你的小提琴中看到的第一件事情是你的隔離區域有一個'filterArray'屬性,但是你在你的模板中引用了'filterObject'(可能是外部作用域中的項目)。 – Claies

+0

@Claies啊感謝捕捉。即使使用正確的語法它仍然有相同的問題:(。 – ajmajmajma

+0

你確定你只改變了指令的範圍而不改變你的模型嗎?你得到的錯誤是因爲你試圖訪問你的filterObject中的一個鍵/ filterArray不存在。 – Martin

回答

0

如果你不能預先初始化outter filterObject可以讓指令控制手柄,對你:

並檢查您的參數Claies說,你的指令中,您需要使用filterArray並在outter NG重複屬性名必須是「過濾器排列,而不是‘filterArray’。

<div ng-repeat="filter in searchResults.filters" class="my-directive" filter="filter" filter-change="filterChange" filter-array="filterObject"> </div> 

見本https://jsfiddle.net/vt1uasw7/164/