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