ng.checked in angular.js无法使用HTML追加

时间:2016-03-18 18:43:13

标签: javascript jquery html angularjs

这是一个todo应用程序。当您在输入中键入内容时,新代码将附加到div.container。然后使用ng-checked="checkAll"的“新生儿”复选框(应检查container中的所有复选框)不响应主复选框中ng-model="checkAll"的更改。在那段时间内,已存在的ng-checked辅助复选框正在响应主要复选框。如何解决?

<body ng-app="App" ng-controller="AppCtrl">
<h1 class="heading">TODODO!</h1>

<div class="container">
    <form ng-submit="newTask()">
        <input type="checkbox" ng-model="checkAll">
        <input type="text" ng-model="text" name="text" placeholder="What tododo?">
    </form>
    <input type="checkbox" ng-checked="checkAll">
</div>
</body>

脚本:

var App = angular.module("App", []);

App.controller('AppCtrl', function ($scope) {
    $scope.list = [];
    $scope.newTask = function () {
        if ($scope.text) {
            $('.container').append("<div class='task'><input type='checkbox' ng-checked='checkAll'/>" + this.text + "</div>");
            $scope.list.push(this.text);
            $scope.text = '';
        }
    };

});

1 个答案:

答案 0 :(得分:0)

问题是两个复选框都使用相同的模型。为每个模型创建一个不同的模型,并进行ng-checked。如果您在选中其中一个复选框时不想影响任何其他复选框,则该复选框显示有自己的属性名称。例如:

<body ng-app="App" ng-controller="AppCtrl">
<h1 class="heading">TODODO!</h1>

<div class="container">
    <form ng-submit="newTask()">
        <input type="checkbox" ng-model="doNotAffectSecond" ng-checked="doNotAffectSecond">
        <input type="text" ng-model="text" name="text" placeholder="What tododo?">
    </form>
    <input type="checkbox" ng-model="doNotAffectFirst" ng-checked="doNotAffectFirst">
</div>
</body>

这是一般的,您可以自定义它。在您的情况下,如果您选中第一个复选框,checkAll将为真,第二个将自动检查。