Javascript Angular 1.4-如何将ng点击项的逻辑从模板移动到控制器?
我希望修改一些代码,为ng repeat中的ng click事件添加更多功能 当前代码将更新列表中项目的选定属性:Javascript Angular 1.4-如何将ng点击项的逻辑从模板移动到控制器?,javascript,angularjs,angularjs-ng-repeat,angularjs-ng-click,Javascript,Angularjs,Angularjs Ng Repeat,Angularjs Ng Click,我希望修改一些代码,为ng repeat中的ng click事件添加更多功能 当前代码将更新列表中项目的选定属性: <li ng-repeat="value in facet.values" ng-click="value.selected = (value.selected == 0) ? 1 : 0; accountSearch()"> ... </li> 问题是上述代码实际上不会修改模板中的选定属性。如何重新创建此行为,但将逻辑移动到控制器?它不更新的原因是它
<li ng-repeat="value in facet.values" ng-click="value.selected = (value.selected == 0) ? 1 : 0; accountSearch()">
...
</li>
问题是上述代码实际上不会修改模板中的选定属性。如何重新创建此行为,但将逻辑移动到控制器?它不更新的原因是它可能不再绑定到模型。试试这个:
<li ng-repeat="value in facet.values" ng-click="itemClicked(value)">
<input type="checkbox" ng-model="value.selected" />
</li>
您可能希望根据您的用例使用
ng checked
而不是ng model
,值不会返回到模板,因此它会丢失。请尝试以下操作:
<li ng-repeat="value in facet.values" ng-click="itemClicked($index)">
...
</li>
$scope.itemClicked = function(index){
$scope.facet.values[index].selected = ($scope.facet.values[index].selected == 0) ? 1 : 0;
$scope.accountSearch();
}
...
$scope.itemClicked=函数(索引){
$scope.facet.values[index].selected=($scope.facet.values[index].selected==0)?1:0;
$scope.accountSearch();
}
好的,谢谢。这有点复杂,因为my ng repeat位于另一个ng repeat内:
也检索第一个索引,并将其作为第二个参数传递,然后执行$scope.facets[index1]。value[index2]。selected=。。。
<li ng-repeat="value in facet.values" ng-click="itemClicked(value)">
<input type="checkbox" ng-model="value.selected" />
</li>
<li ng-repeat="value in facet.values" ng-click="itemClicked($index)">
...
</li>
$scope.itemClicked = function(index){
$scope.facet.values[index].selected = ($scope.facet.values[index].selected == 0) ? 1 : 0;
$scope.accountSearch();
}