Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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 如何将多选元素与对象数组绑定?_Javascript_Angularjs - Fatal编程技术网

Javascript 如何将多选元素与对象数组绑定?

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"

我有一个元素,我想用一个模型绑定它,以获取/设置值,并使用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" 
    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通过引用绑定,而不是检查控制器中设置的值与列表中可能的值是否相等。