Я только что начал с HotTowel и очень впечатлен. Мне удается научиться использовать его с привязкой к нокауту. Вот проблема, я столкнулся:HotTowel: Viewmodel потеряет отображение при навигации между страницами
У меня есть сайт с 3 страниц: Главная, О, Jar
В Jar у меня есть:
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 теряется. Я проверяю его с помощью хром-консоли и проверяю массив массивов, и все его элементы потеряли узел ko.mapping
в атрибуте. Таким образом, я не могу удалить банку, но могу добавить к ней новую.
Может ли кто-нибудь помочь мне разобраться, как переназначить объект после навигации? Спасибо.
Что бы вы сделали, если вам необходимо сделать материал в способе АКТИВИРУЙТЕ после того, были загружены данные? – SB2055
Я сделаю что-то вроде: var prom = $ .Deferred(); someStuff(), а затем (функция() { \t promise.resolve();} ).. Сбой (функция() { \t promise.reject();} ); возвращение обещание; –