所以我试图将一个指令(访问外部)绑定到ng-repeat内的模型。所以在外部控制器中我有一个我希望绑定的变量,如
//in the directive scope
filterArray: '='
在指令内部将指向绑定到ng-repeat中的模型,如此 -
//inside the directive
<li ng-repeat="value in filter.values">
<input type="checkbox" ng-model="filterObject[filter.name][value]" ng-change="filterChange()">{{value}}
</li>
这个工作正常,直到我将指令更改为具有隔离范围,现在它说不能设置undefined的属性。有没有办法让这个按预期工作?这个想法是当用户点击输入时变量会建立起来,这样外部控制器就能看到构建的对象。
道歉,如果这有点令人困惑 - 我已经弄清楚:https://jsfiddle.net/vt1uasw7/42/。
我希望外部控制器能够访问通过绑定模型构建的对象 - 在添加隔离范围之前,这仍然有效。谢谢!
编辑:在这种情况下可能的技巧是不使用隔离范围?这个让我难过,我已经尝试了范围属性的每个组合:(。
答案 0 :(得分:0)
如果你不能预先初始化你的outter filterObject,你可以让指令控制器为你处理:
$scope.filterArray[$scope.filter.name] = {};
按照Claies的说明检查你的参数,在你的指令中你需要使用filterArray,并且outter ng-repeat中的属性名称需要是&#34; filter-array而不是&#34; filterArray&#34;
<div ng-repeat="filter in searchResults.filters" class="my-directive" filter="filter" filter-change="filterChange" filter-array="filterObject"> </div>