1
我剛開始使用HotTowel,並且印象非常深刻。我設法學習如何使用它與敲除綁定。 這裏是我面臨的問題:HotTowel:Viewmodel在頁面之間導航時丟失映射
我有3頁的網站首頁,關於,罐
罐中我有:
define(['services/logger', 'repo/jarrepo'], function (logger, repo) {
var Jar = function() {
this.Id = ko.observable(0);
this.Name = ko.observable('');
}
this.jars = ko.mapping.fromJS([]);
var vm = {
title: ko.observable('JARS'),
jars: jars,
AddJar: function() {
this.jars.push(new Jar);
},
DeleteJar: function (jar) {
jars.destroy(jar);
},
activate: function() {
repo.getJars(this.jars);
return true;
}
};
return vm;
});
並在視圖我有:
<div data-bind="foreach: jars">
<label data-bind="text: name" />
<a href="#" data-bind="click $root.DeleteJar">Delete</a>
</div>
我的回購代碼:
$.getJSON("/api/jar/getjars", function (data) {
ko.mapping.fromJS(data, jars);
});
如果我在Jar頁面上,它工作正常。但是,當我導航到Home並返回時,ko映射丟失。我使用chrome控制檯檢查它,並檢查JAR陣列,並且它的所有元素都已經丟失屬性中的ko.mapping
節點。因此我不能刪除jar,但仍然可以添加新的jar。
任何人都可以幫助我弄清楚如何在導航後重新映射對象? 謝謝。
你會怎麼做,如果你需要做的東西,在以後的激活方法數據被加載? – SB2055 2013-07-08 00:52:43
我會做這樣的事情:var promise = $ .Deferred(); someStuff(),然後(函數(){ \t promise.resolve(); })。。失敗(函數(){ \t promise.reject(); }); 退貨承諾; – 2013-07-08 05:31:55