我想通过设置默认值我NG选项ng-init,ng-model等他们并没有在所有的工作。我的代码如下:
ng-init
ng-model
angular
var app = angular.module('role', []); app.controller('fooController', function($scope){ $scope.roles = [{id:1, name:"Administrator"}, {id:2, name: "Student"}]; $scope.user.roles = $scope.roles[0]; });
HTML
<body data-ng-app="role" data-ng-controller="fooController"> <select multiple class="form-control" data-ng-model="user.roles" data-ng-options="role.name for role in roles" required=""></select> </body>
这是我的Plunkr。 任何帮助,将不胜感激。
更新: 如果您想直接获得此答案中使用的参考,则为: 参考: AngularJS ng- options中的初始选择
更新:
如果您想直接获得此答案中使用的参考,则为:
参考: AngularJS ng- options中的初始选择
这对我有用:
app.controller('fooController', function($scope){ $scope.roles = [{id:1, name:"Administrator"}, {id:2, name: "Student"}]; $scope.user = {}; $scope.user.roles = [ $scope.roles[0] ]; });
插件中有一个user未初始化的错误,除此之外,Angular会将ng-options数组中的每个对象与数组中的每个元素进行比较ng- model。JavaScript比较不是Angular比较,即使比较JavaScript中具有相同属性的2个对象,也会返回false(不同的对象)。
user
ng-options
ng- model
朋克:http ://plnkr.co/edit/ccsAVvPACnN6Qzje7HcB?p=preview
。
现在,这并不理想。通常,您想根据ID左右关联这些,这是另一种方法:
在HTML中,用于track by告诉AngularJS比较ID而不是整个对象:
track by
<select multiple class="form-control" data-ng-model="user.roles" data-ng-options="role.name for role in roles track by role.id" required=""></select>
然后,在您的控制器中,您可以使用任何对象而无需实际位于数组中:
app.controller('fooController', function($scope){ $scope.roles = [{id:1, name:"Administrator"}, {id:2, name: "Student"}]; $scope.user = {}; $scope.user.roles = [ {id:1, name:"Administrator"} ]; });
随便看看:http ://plnkr.co/edit/NKLXrwqwk36YfhBSXILN?p=preview
请注意,我什至不需要该name属性。它只是用于稍后创建适当的对象,但实际上现在不需要匹配,请尝试不使用它!
name
我写了一个详细的教程,并附带了有关此初始选择问题及其变体的视频。它专注于单选,但多选只是使用对象的数组而不是直接使用一个对象。
查看它以获得更多理解-强烈建议:
AngularJS ng-options中的初始选择
如果您仍在努力,请在评论中让我知道。