javascript - Angularjs 模式的复选框表现得很奇怪

标签 javascript angularjs

我在这个plunker中有一个 Angular 应用程序.

当我们单击该按钮时,它会打开一个包含项目列表的模式对话框。其中 2 项是根据复选框表输入中的条件进行预先检查的。

这是推送和拼接的函数:

$scope.toggleCheck = function (course) {
    //debugger
    var x = $scope.checkplanneddetails(course);
    if ($scope.selectedCourses.indexOf(course) === -1){
        $scope.selectedCourses.push(course);
        $scope.planned += 3;
    } else {
        $scope.selectedCourses.splice($scope.selectedCourses.indexOf(course), 1);
        $scope.planned -= 3;
    }

    $scope.getPercentage();
};

当从此列表中选择(选中)类(class)时,它会将 3 添加到 $scope.planned 中,并相应地增加进度条。同样,当取消选中复选框时,它也会以相同的方式减少。

但是对于加载模式对话框时已检查的项目,此功能会发生相反的情况。代码哪里出错了?

最佳答案

问题是您试图在 attitional 数组中保存复选框的状态。相反,您应该只使用“ng-”指令(例如 ng-model 或 ng-checked 用于复选框)

http://plnkr.co/edit/Nm9N2zdBZL7IubMCatjz?p=preview

这是我的修改:

        $scope.toggleCheck = function (course) {
            //debugger
                if(course.checked){
                    $scope.planned += 3;
                } else {
                    $scope.planned -= 3;
                }


                $scope.getPercentage();
        };

而且我还将“ng-clicked”更改为“ng-changed”,因为第一个是在实际值更改之前触发的

关于javascript - Angularjs 模式的复选框表现得很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24000362/

相关文章:

javascript - AngularJS、Jasmine服务测试注入(inject)失败

angularjs - 单元测试依赖注入(inject)

javascript,创建 <div> 和 <button> 然后单击该按钮

javascript - 尝试在 Windows 上执行 package.json 中的脚本会引发 JScript 错误

javascript - 在构造函数 : Why use the prototype keyword? 上创建公共(public)方法

javascript - 使用sessionStorage代替共享服务可以吗

javascript - AngularJS, ng-view + css3 keyframes with jade template - ng-cloak 不工作

javascript - 允许在文本区域中输入 HTML

javascript正则表达式用于逗号分隔的数字重复项

javascript - 选择<span> auf <span></span><a></a>