使用角度ng-options在<select>中设置默认值,可以使用ng-init </select>

时间:2015-03-25 21:16:55

标签: javascript angularjs controller ng-options ng-init

我在html中有这个

<select ng-model="inventory.condition"
        ng-init="inventory.condition = con"
        ng-options="con.name for con in conditions"
    <option >-- choose condition --</option>
</select>
{{inventory.condition}}

在js角度控制器上:

$scope.conditions = [
        {"name":"New","id":101},
        {"name":"Used","id":102},
        {"name":"Like new","id":103},
        {"name":"Not Working","id":104}
] 
$scope.inventory.condition = {"name":"Used","id":102};

SELECT填充工作正常,如果我在列表中选择一个项目,它正确设置ng-model并且Htlm正确显示所选模型(我希望选择完整模型,而不仅仅是“id”值),但是构建列表时,我无法设置默认值。

这个想法是接收一个模型(js对象),它包含默认值(真正来自之前持久存储在DB上的WS的html请求),并选择带有来自model的值的默认项,如果是用户选择一个新项目,它可以改变相同的模型(稍后我将更新/再次保存)。

1 个答案:

答案 0 :(得分:0)

问题是$scope.inventory.condition必须是$scope.conditions数组元素,并且两个对象只有在它们是同一个对象时才相等。所以你不能只设置$scope.inventory.condition = {"name":"Used","id":102};:event虽然{"name":"Used","id":102}看起来像数组的第二个值,但实际上它们并不相等,所以Angular不会将它设置为默认值。

您需要像这样设置模型值:

$scope.conditions = [
    {"name":"New","id":101},
    {"name":"Used","id":102},
    {"name":"Like new","id":103},
    {"name":"Not Working","id":104}
];
$scope.inventory.condition = $scope.conditions[1];