KnockoutJS có khái niệm về các quan sát được tính toán, là các hàm phụ thuộc vào một hoặc nhiều quan sát được. Knock-out có thể determine the dependencies of a computed observable as described in the docs:KnockoutJS - Các quan sát được tính toán với các câu lệnh điều kiện hoạt động như thế nào
Bất cứ khi nào bạn khai báo một thể quan sát được, KO ngay lập tức gọi chức năng đánh giá của nó được tính toán để có được giá trị ban đầu của nó. Trong khi chức năng đánh giá của bạn đang chạy, KO lưu giữ nhật ký của bất kỳ quan sát nào (hoặc tính quan sát được) mà người đánh giá của bạn đọc giá trị của.
Bây giờ, những gì tôi không hiểu là, cách thức hoạt động nếu quan sát được tính của bạn chứa logic có điều kiện. Nếu Knockout gọi hàm đánh giá, chắc chắn logic điều kiện có thể dẫn đến các quan sát mà hàm phụ thuộc vào việc không được gọi?
Tôi tạo ra fiddle này để kiểm tra:
var ViewModel = function(first, last) {
this.firstName = ko.observable(first);
this.lastName = ko.observable(last);
this.condition = ko.observable(false);
// at the point of evaluation of this computed observabled, 'condition'
// will be false, yet the dependecy to both firstName and lastName is
// identified
this.fullName = ko.computed(function() {
return this.condition() ? this.firstName() : this.lastName();
}, this);
};
Tuy nhiên, bằng cách nào đó Knockout xác định một cách chính xác phụ thuộc vào cả hai firstName
và lastName
.
Bất cứ ai có thể giải thích cách thực hiện?
Không thể nhận được câu hỏi, tôi tin rằng các quan sát được tính sẽ xác định trạng thái của riêng trong thời gian chạy bằng cách đánh giá tất cả các phụ thuộc, vì vậy tất cả trông rõ ràng và đơn giản, xin lỗi nhưng không thể có được điểm chính của câu hỏi của bạn – sll
Câu hỏi hay.Tôi luôn nghĩ cách tiếp cận mà họ mô tả trong sách hướng dẫn như bạn đã trích dẫn khá thông minh, nhưng bây giờ bạn chỉ ra điều này, tôi tự hỏi liệu nó có thông minh và không chỉ khá thông minh ...: D –