javascript - 无法以编程方式在 Angular JS 中的 SELECT 元素上使用 2 路绑定(bind)

标签 javascript angularjs angularjs-ng-model angularjs-ng-options

我很难让两种方式绑定(bind)适用于 SELECT 元素。我正在尝试以编程方式更改所选元素。我找到了几个用于绑定(bind) SELECT 的更改事件的 Stackoverflow 示例,但我并没有找到很多相反的方法,即应用程序代码更改所选元素。

我发现有一些在 OPTION 元素上使用 ng-repeat 但我 a) 无法让它工作,b) 似乎不是“Angular Way” .

HTML 代码:

<div ng-controller="SIController">
<select id="current-command" ng-model="currentCommand"
ng-options="c as c.label for c in availableCommands track by c.id"></select>
<button ng-click="changeSelectedOption()">Select "open"</button>

Controller 代码:

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

function SIController($scope) {

    $scope.availableCommands = [
        {id: 'edit',        label: 'Edit'},
        {id: 'open',        label: 'Open'},
        {id: 'close',       label: 'Close'}
    ];

    $scope.currentCommand = "close";
    $scope.changeSelectedOption = function() {
        $scope.currentCommand = 'open';
    };  
};

我可以验证单击按钮时 $scope.currentCommand 正在更改,但选项似乎没有被选中。

Fiddle here

最佳答案

有工作 fiddle 吗:http://jsfiddle.net/bzhkkw18/9/

为了解释我所做的事情,ng-click 和 Controller 中的函数名称不匹配。

主要部分是您的选项的定义。在您的 ng-options 中设置 all 对象。如果这是您真正想要的,您必须在 currentCommand 中执行相同的操作,如下所示:

//Object 2 is close
$scope.currentCommand = $scope.availableCommands[2];

关于javascript - 无法以编程方式在 Angular JS 中的 SELECT 元素上使用 2 路绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31678117/

相关文章:

javascript - 捕获单元测试所需属性的 Vue.js 警告

javascript - 如何在对象中重复对象的数组?

javascript - 如何为 SFTP 服务器实现 for 循环

javascript - 在第三个 Controller 中使用时 RootScope 不工作

angularjs - 如何更新Angular js中的ng-repeat值?

javascript - 重定向到另一个网页

javascript - 无法访问我的 Controller Angular.js 1.3 中的属性

javascript - 为什么我无法从 requirejs 配置访问 REST url

javascript - Ionic - 如何在 Ionic 复选框中获取所选项目

angularjs - 如何向组件添加 ng-model 功能