2017-03-31 65 views
1

我有一个元素,我想绑定一个模型来获取/设置值,并使用角度从列表中填充它1如何使用对象数组绑定多选元素?

我有它的方式,我能够从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> 

JS:

var myApp = angular.module('myApp', []); 

function MyCtrl($scope) { 
    $scope.brands = [{ 
    prop: 1 
    }, { 
    prop: 2 
    }, { 
    prop: 3 
    }]; 
    $scope.selectedBrands = [{ 
    prop: 2 
    }]; 
} 

的jsfiddle:

http://jsfiddle.net/4L8b7cke/

回答

1

重复使用$scope.brands元素,不要为选定项目创建新的元素,因为ngModel通过引用来观察模型。

$scope.selectedBrands = [$scope.brands[0],$scope.brands[1]]; 

更新:

默认情况下,ngModel观看由参考模型,而不是价值。这对于将选择绑定到作为对象或集合的模型时很重要。

ngOptions documentation

+0

我明白了。谢谢! –

+0

我会在十分钟内接受这个答案(所以现在不会让我这么做) –

+0

@Matej:对于我们不熟悉Angular的人(我将自己列入该列表),你能解释一下问题是什么,为什么它是一个问题,这个答案如何解决这个问题? (然而,我接受“这很神奇”可能是解释。) –