多重选择跟踪行为角度与1.4.x的差异

问题描述:

我已将产品从Angular 1.2.x更新到1.4.x多重选择跟踪行为角度与1.4.x的差异

将angularjs更新为1.4.x后;在这里,我现在面临的问题

我有什么: 我已经添加代码片段,其中角1.2.0这里是JSFIDDLE与1.4.8具有相同的代码。

说明

选择从多选框,任何一个用户,将其激活。 选择第二个用户(使用Ctrl键)。

观察: 1.2.x的:首先选择的值仍然有效(真) 的1.4.x:选择第二值的第一值有效标志被重置之后。

为什么会发生这种情况? 我该怎么做才能在1.4.x中获得现有的(1.2.x)输出

注意:我的英文写作不太好。请避免语法错误或纠正它:)

谢谢!

var app = angular.module('test',[]); 
 
app.controller('selectIssue',function($scope){ 
 
\t $scope.users = [{ 
 
    \t name:"Rohit", 
 
    active:false 
 
    }, 
 
    { 
 
    \t name:"Virat", 
 
    active:false 
 
    }, 
 
    { 
 
    \t name:"Viky", 
 
    active:false 
 
    }]; 
 
    $scope.selectedName = []; 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script> 
 
<div ng-app="test"> 
 
    <div ng-controller="selectIssue"> 
 
    <div> 
 
    <select multiple ng-model="selectedName" ng-options="user.name for user in users track by user.name"></select> 
 
    </div> 
 
    Selected value table : 
 
    <div> 
 
     <table border="1"> 
 
     <tr> 
 
      <td>Name</td> 
 
      <td>isActive</td> 
 
      <td>Output</td> 
 
     </tr> 
 
     <tr ng-repeat="n in selectedName"> 
 
      <td>{{n.name}}</td> 
 
      <td><input type="checkbox" ng-model="n.active"></td> 
 
      <td>{{n}}</td> 
 
     </tr> 
 
     </table> 
 
    </div> 
 
    </div> 
 
</div>

+0

“我应该怎么做才能在2.4.x的现有(的2.1.x)输出”等一下,我们采取1.X又名AngularJs或2.X又名角或Angular 2? – DanteTheSmith

+0

您必须对select进行ng更改,然后使用它将值推入模型中。看到这个SO帖子:https://*.com/questions/13473096/angularjs-select-multiple-options-from-object – rrd

+0

@DanteTheSmith更新了这个问题。谢谢! – Sachink

你没有更新$ scope.names当你改变复选框,但$ scope.selectedNames。 这意味着你必须在复选框上使用ng-change来更新$ scope.names。

$scope.updateName = function(name) { 
    angular.forEach($scope.names, function(n) { 
     if (n.name === name.name) { 
      n.active = name.active 
     } 
    }) 
} 

这是一个更新的fiddle

+1

这是事实。但为什么它在1.2中仍然困惑我:) – DanteTheSmith

+0

为什么要我更新我的ng选项?我正在更新ng-model(选定的值),如果我已经从列表中删除活动用户,并且在再次添加之后它不活跃,则不是问题。我有关于用户在列表中没有触及他们,并在列表中添加另一个之后;现有的用户都得到重置 – Sachink

+0

@DanteTheSmith在这里同样困惑? – Sachink