通过角度到1.4.x的不同行为进行多次选择

时间:2017-10-04 14:36:45

标签: javascript html angularjs html-select

我已将我的产品从Angular 1.2.x更新为1.4.x

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

我有什么: 我添加了角度为1.2.0的片段,这里是JSFIDDLE,1.4.8,代码相同。

解释

从多选框中选择任意一个用户,将其设为有效。 选择第二个用户(使用ctrl键)。

观察:  1.2.x:第一个选定的值仍然有效(true)  1.4.x:选择第二个值后,第一个值有效标志被重置。

为什么会这样? 我该怎么做才能获得1.4.x中的现有(1.2.x)输出

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

谢谢!

var app = angular.module('test',[]);
app.controller('selectIssue',function($scope){
	$scope.users = [{
  	name:"Rohit",
    active:false
  },
  {
  	name:"Virat",
    active:false
  },
  {
  	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>

1 个答案:

答案 0 :(得分:0)

更改复选框时,您没有更新$ 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