Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular 1.4-如何将ng点击项的逻辑从模板移动到控制器?_Javascript_Angularjs_Angularjs Ng Repeat_Angularjs Ng Click - Fatal编程技术网

Javascript Angular 1.4-如何将ng点击项的逻辑从模板移动到控制器?

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> 问题是上述代码实际上不会修改模板中的选定属性。如何重新创建此行为,但将逻辑移动到控制器?它不更新的原因是它

我希望修改一些代码,为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="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();
    }