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)
您需要将该功能放在$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(这样,当与另一个属性交互时,其他属性也不会触发).我也会加入这个建议,并建议考虑不同属性的不同功能,但我不确定你正在做什么用途.