AngularJS,在指令中绑定到ng-repeat中的模型

时间:2015-04-12 21:04:29

标签: javascript angularjs

所以我试图将一个指令(访问外部)绑定到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/

我希望外部控制器能够访问通过绑定模型构建的对象 - 在添加隔离范围之前,这仍然有效。谢谢!

编辑:在这种情况下可能的技巧是不使用隔离范围?这个让我难过,我已经尝试了范围属性的每个组合:(。

1 个答案:

答案 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>

请参阅此https://jsfiddle.net/vt1uasw7/164/