Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.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 AngularJS操纵两个ng重复_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS操纵两个ng重复

Javascript AngularJS操纵两个ng重复,javascript,angularjs,Javascript,Angularjs,我在HTML5视图中调用了两次相同的列表 <div class="list" data-ng-repeat="item in model.items"> <div class=list-item"> {{ item.name }} <a data-ng-click="addToList(item)"> <span data-ng-hide="item.checked">Add</

我在HTML5视图中调用了两次相同的列表

<div class="list" data-ng-repeat="item in model.items">
    <div class=list-item">
       {{ item.name }} 
        <a data-ng-click="addToList(item)">
            <span data-ng-hide="item.checked">Add</span>
            <span data-ng-show="item.checked">Remove</span>
        </a>
    </div>
</div>

<div class="checkbox-list" data-ng-repeat="item in model.items">
    <div class=list-item">
       <input type="checkbox" data-ng-checked="item.checked" data-ng-click="addToList(item)" />
       {{ item.name }} 
    </div>
</div>

{{item.name}
在我的控制器中,我在作用域中定义了方法:

function addToList(item) {
    item.checked = !item.checked;

    for (var i = 0; i < this.$scope.items.length; i++) {
        if (this.$scope.items.id == item.id) {
            this.$scope.items[i] = item;
            break;
        }
    }
}
功能添加列表(项){
item.checked=!item.checked;
对于(变量i=0;i
当我单击
添加
删除
按钮时,列表有一个更新,但复选框列表项没有被选中

另一方面,当
选中
复选框时,列表不会得到更新


如何实现这一点?

看起来您正在使用
控制器作为
语法

因此,在js代码中,将模型添加到控制器本身(假设您
yourController
引用了控制器,并且在控制器中有您的方法):

然后在声明控制器的HTML中,按如下方式声明控制器:

 ng-controller = "YourController as yourController"
然后您可以通过以下方式访问HTML中的项目:

yourController.items

您将javascript函数声明语法与

使用angular时,应始终使用angular语法,以获得模型和视图之间同步的好处。 $scope.addToList=函数(){}

var-app=angular.module('plunker',[]);
应用程序控制器('MainCtrl',函数($scope){
$scope.model={};
$scope.model.items=[{“name”:“one”},{“name”:“two”}]
$scope.addToList=函数(项){
item.checked=!item.checked;
}
});

安古拉斯普朗克
文件。写(“”);
{{item.name}
添加
去除
{{item.name}

您没有将函数与$scope一起使用。这可能有助于:

$scope.addToList = function (item) {
    item.checked = !item.checked;

    for (var i = 0; i < $scope.items.length; i++) {
        if ($scope.items.id == item.id) {
            $scope.items[i] = extension;
            break;
        }
    }
}
$scope.addToList=函数(项){
item.checked=!item.checked;
对于(变量i=0;i<$scope.items.length;i++){
如果($scope.items.id==item.id){
$scope.items[i]=扩展;
打破
}
}
}

你所说的
这个.$scope.items是什么意思?
你能创建一个plunker吗?这对我来说很好。是的,这很好。我已经尝试了这个解决方案,但我的代码没有任何变化。代码没有变化意味着你已经在使用这个语法或者结果没有变化?所以解决方案中提供的代码片段很好。你能看看这是否是你所期望的吗?
yourController.items
$scope.addToList = function (item) {
    item.checked = !item.checked;

    for (var i = 0; i < $scope.items.length; i++) {
        if ($scope.items.id == item.id) {
            $scope.items[i] = extension;
            break;
        }
    }
}