不幸的是,我只是围着圈子试图解决这个问题 - 任何帮助都会非常感激。
我想更新使用ng-options生成的选择的模型和选定选项。
以下是选项的值:
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”?这也会更新视图中的选定值吗?
答案 0 :(得分:0)
您需要选择相同的参考,以便在选择中显示一个值。
也就是说,如果您希望根据事件设置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应该在范围内而不是作为局部变量。
答案 1 :(得分:0)
参考“作为另一个事件的结果,我将如何使用相关值更新”blahModel“
我正在扩展您的代码。我有一个文本框,您可以在其中输入1,2或3的值,然后单击设置按钮并选择值更新。
我在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 Code: -
$scope.SetSelect = function () {
$scope.blahModel={valueForModel:$scope.searchSelect};;
};
答案 2 :(得分:0)
是的,它也会更新视图。 请查看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>
`