javascript - AngularJS 选择 - 在 Controller 中设置 ng-model 不会更新所选值

标签 javascript angularjs user-interface data-binding local-storage

我在选择中升级我的 ng-model 时遇到问题。
我有以下 HTML:

<div ng-app>
    <div ng-controller="Ctrl">
        <select ng-model="viewmodel.inputDevice"
        ng-options="i.label for i in viewmodel.inputDevices">
        </select>
    </div>
</div>

和下面的代码:

function Ctrl($scope) {
     // view model
    $scope.viewmodel = new function () {
        var self = this;
        var elem1 = {
            value: '1',
            label: 'input1'
        };

        var elem2 = {
            value: '2',
            label: 'input2'
        }

        self.inputDevices = [elem1, elem2];

        self.inputDevice = {
            value: '1',
            label: 'input1'
        };
    };
}  

您可以使用以下 JSFiddle

我想要做的是将第一个设备在集合 inputDevices 中的相同值放入 inputDevice
我知道我可以传递 elem1 并且它会起作用但是我不能这样做因为我想将选择保存在本地存储中而不是将它恢复到 ng-model 对象。
任何建议将不胜感激
谢谢

最佳答案

您可以像 Maxim 演示的那样存储值而不是对象,或者您可以从 inputDevices 数组中提取正确的值,例如:

self.inputDevice = self.inputDevices.filter(function(item) {
   return item.value == storedValue.value;
})[0];

根据 an updated fiddle

关于javascript - AngularJS 选择 - 在 Controller 中设置 ng-model 不会更新所选值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20731549/

相关文章:

javascript - 更改 SVG 内容时保留 d3 缩放状态?

angularjs - Angular 广播

JQuery 插件,用于逐步增强选择下拉列表到多列显示

android - Unity UI 按钮,触发 OnClick() 的奇怪行为

javascript - CORS header ‘Access-Control-Allow-Origin’ 丢失'。我需要在 Web api(服务)或客户端中编写代码

javascript - 带有返回语句的意外 token

javascript - 为什么这会降低音频质量?

javascript - angularjs通过父级的索引获取td

angularjs - 如何在 AngularJS/Bootstrap3 中禁用基于复选框的内容

javascript - Twitter Bootstrap + Backbone.js + 什么 UI 库?