【发布时间】:2017-08-22 03:17:57
【问题描述】:
我怎样才能让 Broken 示例(如下)工作从 array 更改它(因为我有很多代码取决于它是array 在应用程序的其他部分)?
我想继续使用array,但我想在模型更改时显示正确的选择选项。单击按钮时模型会正确更改,但在选择中未找到该选项(ng-model 和 ng-options 只是在 array 时不匹配)。
angular.module('app', [])
.controller('MainCtrl', ['$scope', function($scope) {
$scope.valueWorking = 'value1';
$scope.selectFilterWorking = [{name: 'name1', value: 'value1'},{name: 'name2', value: 'value2'}];
$scope.valueBroken = ['value1'];
$scope.selectFilterBroken = [{name: 'name1', value: ['value1']},{name: 'name2', value: ['value2', 'value3']}];
}]);
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.min.js"></script>
<div ng-app="app" ng-controller="MainCtrl">
<strong>Working</strong> (SELECT <i>is</i> updated when ng-model is a string):<br>
<select ng-model="valueWorking"
ng-options="select.value as select.name for select in selectFilterWorking">
<option value="">Select an Option</option>
</select>
<button ng-click="valueWorking='value2'">Assign to String of 'value2'</button> {{valueWorking}}<br><br>
<strong>Broken</strong> (SELECT <i>not</i> updated when ng-model is an array):<br>
<select ng-model="valueBroken"
ng-options="select.value as select.name for select in selectFilterBroken">
<option value="">Select an Option</option>
</select>
<button ng-click="valueBroken=['value2','value3']">Assign to Array of ["value2","value3"]</button> {{valueBroken}}
</div>
单击上面的“运行代码 sn-p”后,请注意初始选项未选择(在 Broken 选择上,当它是 array 时),但最初在 Working 选择string。单击“分配给 ["value2"] 的数组”时,也不会显示正确的选项。
更新:我试图让 OPTIONS ($scope.selectFilterBroken) 匹配模型,而不是相反 - 因此我需要将模型保留为 array。按钮单击只是为了模拟应用程序中操纵array 的其他部分。
任何帮助都会很棒。谢谢,请。
【问题讨论】:
标签: javascript html angularjs arrays