2015-09-23 16 views
5

Trong ứng dụng AngularJS 1.3, tôi có một biểu mẫu mà trên đó tôi lấy mô hình và giá trị có thể cho các điều khiển được chọn không đồng bộ từ chương trình phụ trợ. Khi tôi nhận được giá trị mô hình trước các giá trị được sử dụng trong ng-options, không có tùy chọn nào được chọn trong điều khiển chọn. tôi quản lý để tái tạo hành vi này:Giá trị ban đầu của lựa chọn không được đặt trong AngularJS

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

app.controller('MainCtrl', function($scope, $timeout) { 
    $scope.model = { value: 101 }; 

    $timeout(function() { 
    $scope.model.values = [100, 101, 102, 103]; 
    }, 1000); 

}); 

xem:

Options: <select ng-model="model.value" 
     ng-options="v for v in model.values"> 
     <option value="">Select some...</option> 
    </select> 

Sau thời gian chờ mô hình có giá trị cũ của nó 101 nhưng không có tùy chọn được chọn. Hiện tại tôi tìm thấy giải pháp thay thế bằng cách sử dụng ng-if="model.values" khi được chọn, nhưng tôi cảm thấy rằng nên có cách tốt hơn để thực hiện điều đó.

Ai đó có thể giải thích tại sao tùy chọn không được chọn?

Plunkr: http://plnkr.co/edit/4opZRJzdDfJhSNJx8RMF

EDIT: Tôi mở Plunkr trong Firefox và tôi bắt đầu làm việc, sau đó tôi trở lại Chrome và nó đã không làm việc trông giống như vấn đề crossbrowser ...

+0

này dường như là đặc trưng cho góc 1,3; Các mã hoạt động chính xác trong góc 1,2, và trong phiên bản hiện tại 1.4.6 – Claies

+0

Tôi không chắc chắn nhưng tôi nghi ngờ điều này nên được đóng lại như không thể sản xuất được vì vấn đề này chỉ ảnh hưởng đến các phiên bản khung cụ thể và không có trong bản phát hành ổn định hiện tại. – Claies

Trả lời

0

Tôi đồng ý với @PrimosK về vấn đề.

Giải pháp là để thêm theo dõi:

ng-options="v for v in model.values track by v" 

dụ trong Plunker

1

Nó trông như thế này là regression trong AngularJs 1.3.x.

Ví dụ bạn cung cấp hoạt động tốt trong AngularJs 1.2.x và 1.4.x.

+0

Bạn được chào đón. – PrimosK

+0

Cập nhật dự án lên AngularJs 1.4 giải quyết vấn đề này (hôm qua tôi đã thực hiện kiểm tra sai lầm ngu ngốc trên Plunker, tôi kiểm tra lại và nó hoạt động) – csharpfolk

Các vấn đề liên quan