2014-09-15 15 views
11

Tôi đã thấy một số chỉ thị bằng dấu hỏi (?) Trong định nghĩa thuộc tính phạm vi như vậy:Câu hỏi dấu ấn trong thị AngularJs

app.directive('userInfo', function() { 
     return { 
     restrict: 'A', 
     scope: {prop: '=?'}, 
     templateUrl: 'some/template/url', 
    }; 

Tôi đã tìm kiếm nó và nghĩ duy nhất tôi thấy là điều này: what's the meaning of '=?' in angularJS directive isolate scope declaration?. Nhưng nó không hoạt động theo cách anh ta giải thích nó ở đó. Tôi đã thành công khi chạy ứng dụng của mình và không có ngoại lệ nào bị ném.

Ai đó có thể giải thích thêm về nó?

+0

Mã ứng dụng của bạn là gì? Làm thế nào chúng ta có thể giải thích bất cứ điều gì nếu chúng ta không biết mã của nó? –

+0

Theo liên kết bạn đã gửi, không có ngoại lệ nên được ném bởi vì dấu hỏi làm cho biến phạm vi được xác định 'chống đỡ' tùy chọn. – efeder

+0

Trong trường hợp của tôi, tôi không sử dụng '?' và không có ngoại lệ nào được ném – Rivi

Trả lời

13

Nếu bạn không thêm ?không đặt một tài sản prop trên yếu tố của bạn, bạn đang sử dụng chỉ thị trên, sau đó một ngoại lệ sẽ được ném ra.

Thêm ?, đánh dấu thuộc tính là tùy chọn. Như đã đề cập trong số documentation for $compile:

Bạn có thể tránh hành vi này bằng cách sử dụng =? hoặc =? attr để gắn cờ thuộc tính là tùy chọn.

Tôi nghĩ tài liệu có thể hơi lạc hậu trong khu vực đó. NON_ASSIGNABLE_MODEL_EXPRESSION chỉ xuất hiện trong older revisions of the source.

Xin lưu ý rằng ngoại lệ chỉ được ném khi bạn cố gắng ghi vào thuộc tính phạm vi. Tôi đã ném một bản thảo nhanh chóng để trình bày vấn đề: http://plnkr.co/edit/hjUq6ZisuRG2C3mZpRDj?p=preview

+0

Yea, tôi hiểu rồi. đó không phải là câu hỏi khó khăn. Vấn đề của tôi là khi tôi không sử dụng '?' và không sử dụng thuộc tính 'prop' trong phần tử, không có ngoại lệ nào được ném ra. vì vậy tôi nghĩ có một lời giải thích khác cho việc sử dụng '?' – Rivi

+0

@ user1857251 Tôi đã cập nhật câu trả lời của mình. Hy vọng rằng nó hữu ích hơn bây giờ :) –

+0

Vâng, tôi nghĩ rằng tài liệu hướng dẫn đã lỗi thời. Tôi đã thử nó và như bạn đã nói - khi bạn đang cố gắng để thay đổi giá trị của tài sản phạm vi có một ngoại lệ vì không xác định của nó (nếu bạn không sử dụng '?'). Cảm ơn! – Rivi