2015-04-14 12 views
8

Vấn đề của tôi là đối với mỗi tùy chọn chọn, tôi cần gọi một chức năng khác, không phải chức năng tương tự.ng-thay đổi tùy chọn chọn gọi nhiều chức năng độc đáo

Tôi bắt đầu bằng ng-click vào từng tùy chọn chọn nhưng nhanh chóng nhận ra điều này không hiệu quả. Sau đó tôi đọc tài liệu của Angular về ng-options https://docs.angularjs.org/api/ng/directive/ngOptions

Tài liệu minh họa bằng cách sử dụng ng-thay đổi nhưng dựa trên thực tế là mỗi tùy chọn chọn đều có cùng chức năng được áp dụng cho nó.

Sau khi suy nghĩ về điều này một chút, tôi đã kết thúc việc tạo một hàm được gọi trên ng-thay đổi. Hàm này chỉ xác định người được gọi nào.

$scope.determineAction = function() { 
    var getDelegation = $injector.get($scope.selected.action); 
    getDelegation.delegate(); 
    } 

Plunker: http://plnkr.co/edit/2Str6OqmFDH3kKdiW6i5

tôi đã tạo ra một giải pháp cho vấn đề của tôi, nhưng tôi muốn biết nếu điều này là cách tiếp cận đúng không? Tôi có thiếu một cái gì đó trong ng-tùy chọn cho phép cho nhiều cuộc gọi chức năng khác nhau?

Trả lời

3

TL; DR: Có, bạn đang làm đúng.

Có, bạn đang làm đúng. Bạn không thiếu một số khía cạnh bí mật của ng-options cho phép bạn chỉ định điều gì đó khác nhau cho mỗi mục. Trong thực tế, làm điều này sẽ đánh bại mục đích của ng-options. Nó có nghĩa là cụ thể cho các tình huống mà số lượng các mặt hàng bạn đang xử lý là biến, nhưng các hành động cần được thực hiện trên chúng đều giống nhau.

Trong your Plunker, bạn đang thể hiện chính xác điều này. Bạn có một danh sách các hành động biến đổi; nó có thể có bất kỳ số lượng hành động nào để thực hiện. Tuy nhiên, những gì bạn muốn làm với họ là như nhau: khi bạn chọn một mục mới, bạn muốn chạy một số hành động theo quy định của phạm vi ủng hộ của bạn. Đây chính là điều mà bộ điều khiển có ý nghĩa! Như bạn thấy, tất cả những gì bạn cần làm là viết hàm của bạn theo cách nó xác định trạng thái hiện tại của sự vật và phản ứng tương ứng. Và tất cả những gì bạn cần làm là đảm bảo rằng nó đang thiết lập trạng thái đó để bộ điều khiển của bạn có thể hiểu được nó.

Bạn đang thực hiện tất cả những điều này nên hãy tiếp tục!

+0

Cảm ơn bạn đã trả lời. Thật tốt khi biết tôi đã đi đúng hướng. – Harbinger

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