Javascript 如何将多选元素与对象数组绑定?
我有一个元素,我想用一个模型绑定它,以获取/设置值,并使用angular 1从列表中填充它 按照我的方式,我能够将它从UI绑定到模型,而不是从UI绑定到模型,我做错了什么 HTML:Javascript 如何将多选元素与对象数组绑定?,javascript,angularjs,Javascript,Angularjs,我有一个元素,我想用一个模型绑定它,以获取/设置值,并使用angular 1从列表中填充它 按照我的方式,我能够将它从UI绑定到模型,而不是从UI绑定到模型,我做错了什么 HTML: <div ng-controller="MyCtrl"> <select class="form-control" ng-options="o as o.prop for o in brands" ng-model="selectedBrands"
<div ng-controller="MyCtrl">
<select class="form-control"
ng-options="o as o.prop for o in brands"
ng-model="selectedBrands"
multiple="multiple"
>
</select>
</div>
var myApp = angular.module('myApp', []);
function MyCtrl($scope) {
$scope.brands = [{
prop: 1
}, {
prop: 2
}, {
prop: 3
}];
$scope.selectedBrands = [{
prop: 2
}];
}
JSFiddle:
<div ng-controller="MyCtrl">
<select class="form-control"
ng-options="o as o.prop for o in brands"
ng-model="selectedBrands"
multiple="multiple"
>
</select>
</div>
var myApp = angular.module('myApp', []);
function MyCtrl($scope) {
$scope.brands = [{
prop: 1
}, {
prop: 2
}, {
prop: 3
}];
$scope.selectedBrands = [{
prop: 2
}];
}
重用
$scope.brands
元素,不为所选项目创建新项目,因为ngModel通过引用查看模型
$scope.selectedBrands = [$scope.brands[0],$scope.brands[1]];
更新:
默认情况下,ngModel通过引用而不是值监视模型。在将select绑定到作为对象或集合的模型时,了解这一点很重要
从啊,我明白了。谢谢我会在十分钟内接受这个答案(所以现在不让我这么做)@Matej:对于我们这些不熟悉Angular的人(我也包括在这个列表中),你能解释一下问题是什么,为什么是个问题以及这个答案是如何解决这个问题的吗?(不过,我承认“这是魔法”很可能就是解释。)据我所知,我在这个问题上没有发现任何问题。你能解释一下问题中是什么让你建议$scope.selectedBrands=[$scope.brands[0],$scope.brands[1];作为回答。@DavidThomas我假设Angular通过引用绑定,而不是检查控制器中设置的值与列表中可能的值是否相等。