Tôi là người mới bắt đầu trong Knockout và tôi phải nói rằng tôi thường bị nhầm lẫn về thời điểm sử dụng ()
. Có bất kỳ mẹo/lừa chung nào liên quan đến thời điểm bạn sử dụng ()
để chống lại thời điểm bạn không làm vì hiện tại tôi chỉ đang thực hiện thử và sai. Nếu liên kết ném lỗi hoặc không cập nhật các giá trị tôi xóa ()
khác tôi đặt.Khi nào tôi nên sử dụng dấu ngoặc đơn trong loại bỏ
Trả lời
Bạn sử dụng ()
khi loại bỏ khi sử dụng các quan sát hoặc khi thực hiện bất kỳ phương pháp nào khác. Quan sát Knockout là các hàm, được gọi để trả lại cho bạn những gì bạn đang tìm kiếm hoặc cho phép bạn gán các giá trị mới.
Trong loại trực tiếp bạn sử dụng object.property()
để truy lục giá trị và object.property(newValue)
để chỉ định giá trị cho thuộc tính đó.
Khi loại trực tiếp website kiểm tra tài liệu, cụ thể là phần trên observables, hiển thị cho bạn việc sử dụng ()
khi truy vấn và viết quan sát.
Để quote:
var myViewModel = {
personName: ko.observable('Bob'),
personAge: ko.observable(123)
};
Để đọc giá trị hiện tại của thể quan sát được, chỉ cần gọi các quan sát không có tham số. Trong ví dụ này, myViewModel.personName() sẽ trả lại 'Bob' và myViewModel.personAge() sẽ trả về 123.
Để viết giá trị mới cho quan sát được, hãy gọi cho quan sát và chuyển giá trị mới dưới dạng tham số. Ví dụ: gọi số myViewModel.personName ('Mary') sẽ thay đổi giá trị tên thành 'Mary'.
Để ghi giá trị cho nhiều thuộc tính quan sát được trên đối tượng mô hình, bạn có thể sử dụng cú pháp chuỗi. Ví dụ, myViewModel.personName ('Mary'). Nhân vật (50) sẽ làm thay đổi giá trị tên để 'Mary' và giá trị tuổi đến 50.
Knockout của interactive tutorial cũng khá đẹp và cũng đáng để trải qua.
Về cơ bản bất cứ khi nào bạn làm việc với giá trị quan sát (mảng hoặc cách khác), bạn nên sử dụng dấu ngoặc đơn để lấy giá trị và đặt giá trị.
var something = ko.obserbable();
something(5); //set value
console.log(something()); //get value: 5
Lý do được rằng hầu hết các trường JS không hỗ trợ getter và setter cho tài sản, vì vậy quan sát đã được thực hiện như thế này để có được khắc phục hạn chế này.
Tôi cảm thấy như các câu trả lời hiện có bỏ qua một điểm rất quan trọng của sự nhầm lẫn: data-bind
thuộc tính.
Đúng là bạn sử dụng các parens khi bạn đang ở trong Javascript, và nhận hoặc thiết lập các quan sát. Nhưng khi bạn đang viết data-bind="text: property"
, bạn bỏ qua các số parens ngay cả khi làm việc với các quan sát.
Sửa
Như đã đề cập trong các bình luận dưới đây, các ràng buộc đó là những biểu hiện, hoặc tài sản tiếp cận của observbles, đòi hỏi Parens
visible: personName().length > 0
visible: person().Name().length > 0
visible: person().isVisible
Lưu ý rằng cuối cùng một person
và isVisisble
đều quan sát, nhưng các tài sản cuối cùng không sử dụng parens! Lý do cho điều này là chúng ta sẽ chuyển một giá trị tới ràng buộc thay vì quan sát, và nó sẽ không cập nhật.
- 1. Khi nào tôi sử dụng dấu ngoặc đơn và khi nào tôi không sử dụng?
- 2. Loại bỏ dấu ngoặc đơn khỏi một chuỗi
- 3. Tôi nên làm thế nào để thêm dấu gạch chéo vào dấu nháy đơn và bỏ qua dấu ngoặc kép?
- 4. Xóa văn bản trong dấu ngoặc đơn (dấu ngoặc đơn trong dấu ngoặc đơn)
- 5. Cách sử dụng dấu ngoặc đơn trong F #
- 6. Khi nào tôi nên sử dụng dấu và với scanf()
- 7. Khi nào tôi không nên sử dụng dấu chấm phẩy?
- 8. Tại sao tôi phải bỏ qua dấu ngoặc đơn khi chuyển một hàm làm đối số?
- 9. Ghép cặp dấu ngoặc nhọn, dấu ngoặc đơn và dấu ngoặc đơn
- 10. loại bỏ dấu ngoặc kép từ khóa trong một chuỗi json sử dụng jquery
- 11. Làm thế nào tôi có thể thay thế một chuỗi trong dấu ngoặc đơn bằng cách sử dụng regex?
- 12. Thay thế dấu phẩy trong dấu ngoặc đơn bằng cách sử dụng regex trong java
- 13. Tại sao numpy.r_ sử dụng dấu ngoặc vuông thay vì dấu ngoặc đơn?
- 14. Tách bằng cách sử dụng dấu ngoặc đơn
- 15. Sử dụng dấu ngoặc kép đơn và kép cho href
- 16. Hủy bỏ bất cứ điều gì trong một cặp ngoặc đơn sử dụng gsub trong R
- 17. Chọn văn bản bên trong dấu ngoặc đơn từ bên ngoài dấu ngoặc đơn trong Vim
- 18. Trong Jira Agile khi nào tôi nên sử dụng "Story" và khi nào tôi nên sử dụng "Cải tiến"
- 19. Cách thoát dấu ngoặc đơn trong grep
- 20. Java Regex để loại bỏ bắt đầu/kết thúc dấu nháy đơn nhưng để lại bên trong dấu ngoặc kép
- 21. JSON chuỗi từ Gson: loại bỏ dấu ngoặc kép
- 22. Khi nào tôi nên sử dụng GC.SuppressFinalize()?
- 23. Khi nào tôi nên sử dụng ConcurrentSkipListMap?
- 24. Khi nào tôi nên sử dụng AQL?
- 25. Dấu ngoặc đơn xung quanh loại dữ liệu?
- 26. Làm thế nào để loại bỏ \ trước dấu ngoặc kép trong một hình thức đầu vào
- 27. Xóa các dấu ngoặc đơn trong json?
- 28. Làm thế nào để loại bỏ văn bản trong ngoặc đơn sử dụng một biểu thức chính quy
- 29. Khi nào tôi nên sử dụng SynchronousQueue
- 30. Khi nào tôi nên sử dụng adorners?
Điểm tốt, ngoại lệ duy nhất là nếu một biểu thức JavaScript được sử dụng bên trong thuộc tính ràng buộc dữ liệu, trong đó dấu ngoặc đơn ** được ** yêu cầu, ví dụ: 'visible: personName(). length> 0' – benrwb
Dấu ngoặc đơn cũng được yêu cầu khi sử dụng các liên kết ảo dựa trên nhận xét, như trong:' '. Tôi không hiểu tại sao đây là trường hợp, nhưng như của 2.3.2, nó là sự thật. – x0n
Xem http://stackoverflow.com/a/11318720/1154642 để biết ví dụ khác về việc sử dụng một quan sát được trong một biểu thức. – bryanbraun