Tôi có một điều khiển chọn. Các tùy chọn của nó được tạo động từ mảng các đối tượng của phạm vi. Trên ứng dụng init tôi muốn chọn một tùy chọn cụ thể bằng cách thay đổi biến bị ràng buộc trên phạm vi.AngularJS: Chọn không thay đổi tùy chọn đã chọn về thay đổi biến phạm vi bị ràng buộc
Nó không hoạt động khi tùy chọn ng của tùy chọn trả về đối tượng đầy đủ. Tuy nhiên, nó hoạt động khi chọn ng-option trả về chuỗi.
Có lỗi góc cạnh hoặc tôi làm điều gì sai?
HTML:
<div ng-controller="selectCtrl" ng-app>
Doesn't work when select's ngModel value is object:<br />
<select ng-model="valueObject" ng-options="o.label for o in options"></select><br />
<pre>{{valueObject | json}}</pre>
Works when select's ngModel value is string:<br />
<select ng-model="valueString" ng-options="o.value as o.label for o in options"></select>
<pre>{{valueString | json}}</pre>
JS:
function selectCtrl($scope) {
$scope.options = [
{label: 'a', value: '1', someId: 333},
{label: 'b', value: '2', someId: 555}
];
$scope.valueObject = {label: 'a', value: '1', someId: 333};
$scope.valueString = '1';
};
JS Fiddle: http://jsfiddle.net/apuchkov/FvsKW/6/
Bạn nói đúng, chỉ cần kiểm tra mã nguồn của angular.js và nó sử dụng "===" để chọn kiểm tra nếu tùy chọn nên được chọn. Tôi hy vọng nó sẽ sử dụng angular.equals thay thế. –