Tôi có một trình xử lý ràng buộc với logic đơn giản bên trong nơi tôi sẽ cập nhật các quan sát để nó sẽ cập nhật chính nó trong xem.Làm thế nào tôi có thể cập nhật một quan sát được trong các ràng buộc tùy chỉnh?
này trường hợp mẫu ia nơi mọi thứ hoạt động như mong đợi
Xem của tôi:
<input data-bind="value: name" />
<hr/>
<div data-bind="fadeInText: name"></div>
Code:
ko.bindingHandlers.fadeInText = {
update: function(element, valueAccessor) {
ko.bindingHandlers.text.update(element,valueAccessor);//text becoz its binded to div
}
};
Ở đây tôi đang cố gắng để làm một cái gì đó như thế này (bên dưới) và tôi bị kẹt ở đây updating a observable
Quan điểm của tôi:
<input data-bind="value: name" />
<hr/>
<input type="text" data-bind="fadeInText: name" />
<div data-bind="text:ko.toJSON($data)"></div>
Code:
ko.bindingHandlers.fadeInText = {
update: function(element, valueAccessor) {
var value = valueAccessor();
ko.bindingHandlers.value.update(element,valueAccessor);
$(element).change(function() {
value($(element).fadeInText('get'));
});
}
};
Trong kịch bản được đưa ra này có hai textbox khi tôi cập nhật một giá trị trong textbox-1 sau đó giá trị textbox-2 là nhận được đã cập nhật.
Nhưng khi tôi cố gắng cập nhật giá trị textbox-2 không có gì được cập nhật, tôi cảm thấy rất gần nhưng bây giờ tôi không thể giải quyết vấn đề này.
Checked chrome console tôi thấy Uncaught TypeError: undefined is not a function
nhưng fadeInText
hiện diện trong ràng buộc
Cập nhật:
tôi đã cố gắng allBindingsAccessor().fadeInText()
tôi nhận được giá trị mỗi lần cũ không phải là mới bước một.
Fiddler cung cấp here
Có gì đó với cùng một cách làm nhưng làm việc của nó fiddler here.
Bất kỳ trợ giúp nào về điều này đều tuyệt vời.
Bạn đã thử cập nhật quan sát bằng cách sử dụng 'value (element.value);'? Xem http://jsfiddle.net/SmkpZ/469/ – haim770
'yeah' trông giống như đó là mảnh tôi đang thiếu ở đây' haim770'. tôi đã thử element.val(), $ (element) .val() nhưng làm thế nào bạn đã đưa ra element.value? bất cứ nơi nào là tài liệu. –
Vì tham số 'element' là' HTMLInputElement' gốc được truyền (https://developer.mozilla.org/en/docs/Web/API/HTMLInputElement), nó cung cấp thuộc tính 'value'. Tuy nhiên, bạn phải nhận ra rằng bạn đang ràng buộc lại sự kiện 'thay đổi' mỗi khi những thay đổi có thể quan sát được và điều đó sẽ gây ra nhiều đánh giá về trình xử lý. Bạn nên di chuyển liên kết 'change' sang hàm' init' của trình xử lý ràng buộc. – haim770