if if function if if复选框被选中angular.js

Imo*_*Imo 2 javascript jquery angularjs

在角度js中选中复选框时,如何执行函数.我已经看到关于堆栈溢出的一些答案,但我似乎无法在我的场景中实现它们

我的代码:

<div ng-controller="MyCtrl">
 <div class="checkbox">
        <label>
        <input type="checkbox" ng-model="thirtyDay" ng-click="changeAxis()">
        Last 30 Days
        </label>
         </div>
         <div class="checkbox">
        <label>
        <input type="checkbox" ng-model="wholeTimeline" ng-click="changeAxis()">
        Whole Timeline
        </label>
         </div>
</div>
Run Code Online (Sandbox Code Playgroud)

JS.

var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
   function changeAxis(){
          if ($scope.thirtyDay) {
                    alert("checked 30");
                }
          else if($scope.wholeTimeline) {
                    alert("checked whole");
                }

        };
}
Run Code Online (Sandbox Code Playgroud)

Omr*_*ron 5

您需要将该功能放在$scope,所以视图将识别它:

$scope.changeAxis = function() {
      if (!$scope.thirtyDay) {
           alert("checked 30");
      }
      else if(!$scope.wholeTimeline) {
           alert("checked whole");
      }
 };
Run Code Online (Sandbox Code Playgroud)

另一件需要注意的事情是,在输入函数时,您将从推送之前获得模型的值.因此,如果您单击并选中它,则该值仍为false(尚未更新).所以无论是使用!$scope.thirtyDay还是放置在$timeout.

编辑:正如迈克在他的评论中正确提到的,你可能会更好地使用ng-change而不是ng-click(这样,当与另一个属性交互时,其他属性也不会触发).我也会加入这个建议,并建议考虑不同属性的不同功能,但我不确定你正在做什么用途.