javascript - Angular : Select doesn't change selected option on change of bound scope variable

标签 javascript angularjs

我有一个选择控件。它的选项是从作用域的对象数组动态生成的。在应用程序初始化时,我想通过更改作用域上的绑定(bind)变量来选择特定选项。

当 select 的 ng-option 返回完整对象时,它不起作用。但是,它在 select 的 ng-option 返回字符串时有效。

是 Angular 错误还是我做错了什么?

HTML:

<div ng-controller="selectCtrl" ng-app>
    Doesn't work when select's ngModel value is object:<br />
    <select ng-model="valueObject" ng-options="o.label for o in options"></select><br />
    <pre>{{valueObject | json}}</pre>

    Works when select's ngModel value is string:<br />
    <select ng-model="valueString" ng-options="o.value as o.label for o in options"></select>
    <pre>{{valueString | json}}</pre>    

JS:

function selectCtrl($scope) {    
   $scope.options = [
       {label: 'a', value: '1', someId: 333},
       {label: 'b', value: '2', someId: 555}
   ];    
   $scope.valueObject = {label: 'a', value: '1', someId: 333};
   $scope.valueString = '1';
};

JS fiddle :http://jsfiddle.net/apuchkov/FvsKW/6/

最佳答案

"Track by"expression 必须用于在我的问题中制作示例。更多详情:http://leoshmu.wordpress.com/2013/09/11/making-the-most-of-ng-select/

更新的 JsFiddle:http://jsfiddle.net/apuchkov/FvsKW/9/

HTML

<div ng-controller="selectCtrl" ng-app>
    Doesn't work when select's ngModel value is object:<br />
    <select ng-model="valueObject" ng-options="o.label for o in options"></select><br />
    <pre>{{valueObject | json}}</pre>

    Does work when select's ngModel value is object AND 'track by' expression is used:<br />
    <select ng-model="valueObject" ng-options="o.label for o in options track by o.value"></select><br />
    <pre>{{valueObject | json}}</pre>
</div>

JS

function selectCtrl($scope) {    
    $scope.options = [
        {label: 'a', value: '1', someId: 333},
        {label: 'b', value: '2', someId: 555}
    ];    
    $scope.valueObject = {label: 'a', value: '1', someId: 333};
};

关于javascript - Angular : Select doesn't change selected option on change of bound scope variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19057822/

相关文章:

javascript - 在SVG中编写<path>数据脚本(读取和修改)

javascript - Parsejs Angular/ ionic 检索 View 中的关系对象(第二次打开页面时显示值)

javascript - 为什么访问不存在的对象属性会导致 `undefined` 而不是抛出 `ReferenceError` ?

javascript - jQuery 中的 Yahoo New Weather API oAuth 调用

angularjs - ui-gmap-markers 不起作用

javascript - Angular - 使用 ng-style 更改 css

javascript - Checkboxlist ng-repeat过滤器动态angularjs

javascript - 如何迭代对象数组并添加属性

javascript - 等待进度条在 Protractor 中出现并消失

javascript - 在Vue js中将组件模板拆分成多个部分有什么可行的解决方案吗?