Tôi đang mắc kẹt với những gì phải là một sửa chữa đơn giản. Tôi đang sử dụng knockout.js với mô hình xem lồng nhau, và tất cả có vẻ tốt ngoại trừ chức năng loại bỏ của tôi không hoạt động chính xác. Nó dường như được ràng buộc một cách chính xác, tuy nhiên nó không được kích hoạt khi tôi nhấp vào loại bỏ.Loại bỏ chế độ xem lồng nhau
Tại sao các kiểu xem lồng nhau? Long câu chuyện, nhưng về cơ bản rất nhiều thứ được yêu cầu phải được trên một trang!
Vì vậy, đây là mã:
HTML
<section class="mini-form-container">
<form data-bind="submit: repeatGuest.addDate">
<input type="date" data-bind="value: repeatGuest.previousStay"/>
<button type="submit" class="button-secondary ">Add date</button>
</form>
<div data-bind="foreach: repeatGuest.dates, visible: repeatGuest.dates().length > 0">
<div>
<input data-bind="value: date" disabled="disabled" />
<a data-bind="click: $parent.removeDate">Remove</a>
</div>
</div>
</section>
<section>
<div data-bind="text: ko.toJSON($data)"></div>
</section>
Javascript
function RepeatGuest() {
/// <summary>Child View Model</summary>
this.dates = ko.observableArray();
this.previousStay = ko.observable();
}
RepeatGuest.prototype.addDate = function() {
var self = this.repeatGuest;
if (self.previousStay()) {
self.dates.push({
date: self.previousStay()
});
}
};
RepeatGuest.prototype.removeDate = function (date) {
this.dates.remove(date);
}
function ViewModel() {
var self = this;
self.repeatGuest = new RepeatGuest();
}
ko.applyBindings(new ViewModel());
Và đây là fiddle tôi: http://jsfiddle.net/6Px4M/2/
Vậy tại sao chức năng loại bỏ của tôi không bị sa thải?
Câu hỏi phụ có thể xảy ra: là các kiểu xem lồng nhau sai đường dẫn vào loại trực tiếp, dường như không có nhiều thông tin về điều này?
Tôi thích mẫu 'var self = this'. Nó dễ dàng hơn cho tôi để luôn luôn sử dụng 'self' hơn là nhớ ràng buộc các hàm. Nó cũng trông sạch hơn, imo. – Tyrsius
công cụ tốt này, +1 từ tôi, nhưng có một vấn đề cơ bản hơn là chức năng này không bao giờ được chạy kể từ khi anh ta mắc kẹt nó trên nguyên mẫu. Mặc dù nếu anh ta theo tất cả các bước của bạn sẽ được giải quyết quá. –
@Tyrsius - Tôi đã cố gắng thể hiện cách bạn vẫn có thể thực hiện chức năng trên mẫu thử nghiệm. 'self' là một mô hình tốt. –