更新使用 ng-options 生成的 select 的模型和 selected 选项

Update the model and selected option of a select that is generated using ng-options

不幸的是,我只是绕着圈子试图解决这个问题 - 任何帮助将不胜感激。

我想更新使用 ng-options 生成的 select 的模型和 selected 选项。

以下是选项的值:

var blahOptionValues = [
  {valueForModel: '1', optionText: 'a'},
  {valueForModel: '2', optionText: 'b'},
  {valueForModel: '3', optionText: 'c'},
]

这是我的观点:

<select ng-model="blahModel" ng-options="item.valueForModel as item.optionText for item in blahOptionValues"></select>

作为另一个事件的结果,我将如何使用相关值更新 "blahModel"?这也会更新视图中的 selected 值吗?

您需要 select 相同的引用才能在 select 中显示值。

也就是说,如果你想设置基于事件的blahModel,你需要做以下事情:

//Assume that the following code is in your event handler.
//Assuming here that you want to set the value  of the select to 'b'
$scope.blahModel = $scope.blahOptionValues[1].valueForModel

如果您直接将值设置为 2,它将不起作用,因为它不是同一个引用。您需要明确使用与 ng-repeat 中使用的迭代器相同的迭代器。此外,您的代码中似乎存在错误 - blahOptionValues 应该在范围内而不是局部变量。

参考 "As a result of another event, how would I update the "blahModel" 的相关值"=12=]

我正在扩展您的代码。我有一个文本框,您可以在其中输入值 1,2 或 3,然后单击设置按钮,select 值会更新。

我在 ng-options 中添加了 track by

Html :-

<select ng-model="blahModel" ng-options="item.valueForModel as item.optionText for item in blahOptionValues track by item.valueForModel"></select>
<input type="text" data-ng-model="searchSelect"/>
<input type="button" data-ng-click="SetSelect()" value="Set"/>

Angular代码:-

$scope.SetSelect = function () { 
    $scope.blahModel={valueForModel:$scope.searchSelect};;
};

是的,它也会更新视图。 请查看 plunker 中的演示:link: http://plnkr.co/edit/7XVrn7GmfKrJS7e4fvuH?p=preview`

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
  $scope.blahOptionValues = [
      {valueForModel: '1', optionText: 'a'},
      {valueForModel: '2', optionText: 'b'},
      {valueForModel: '3', optionText: 'c'},
    ];
    
  $scope.blahModel = '2';  
  
  $scope.update = function(){
    
    $scope.blahModel = '1';
  };
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">{{blahModel}}
    <select ng-model="blahModel" ng-options="item.valueForModel as item.optionText for item in blahOptionValues"></select>
    <button ng-click="update()" >update</button>
  </div>

`