2015-04-12 72 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/