我堅持什麼必須是一個簡單的修復。我使用嵌套視圖模型的knockout.js,除了我的刪除功能無法正常工作外,它們看起來都很好。它似乎是正確綁定的,但是當我點擊刪除時它不會被解僱。挖空嵌套視圖模型
爲什麼嵌套視圖模型?長話短說,但基本上很多東西都需要在一個頁面上!
所以這裏是代碼:
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());
這裏是我的小提琴:http://jsfiddle.net/6Px4M/2/
那麼爲什麼我的刪除功能不被解僱?
可能側的問題:是嵌套視圖模型採取淘汰賽走錯了路,似乎沒有對這麼多信息?
我更喜歡'var self = this'模式。對我來說,總是使用'self'比記住綁定函數更容易。它也看起來更乾淨,imo。 – Tyrsius 2013-03-01 17:46:32
這個好東西,來自我的+1,但是有一個更基本的問題,那就是這個函數從原型開始就不會運行。但如果他遵循了所有可以解決的步驟。 – 2013-03-01 17:50:57
@Tyrsius - 我試圖展示如何將這個函數的實現放在原型上。 'self'是一個很好的模式。 – 2013-03-01 18:06:26