【发布时间】:2013-07-02 03:36:19
【问题描述】:
我有一个需要有条件地填充数据的视图和视图模型。我注意到 viewAttached 覆盖每个视图只被调用一次......因此最初是我所有 init 调用的逻辑位置,因为数据几乎是静态的。
但是在我将数据从另一个视图传递到屏幕的情况下,激活调用会在 viewAttached 之前触发...所以如果用户之前没有导航到视图...他们的选择不会被选为init 函数不会被调用。
我的问题如下:
哪个钩子被认为与执行任何淘汰绑定最相关,或者我如何修改执行顺序,如果我这样做......事情会爆炸吗? :P(作为工作部件框架的修补程序,可能最终会出现不稳定的代码)
视图模型
var vm = {
lookups: lookups,
userInfo: userInfo,
buttons: buttons,
viewAttached: function (view) {
$('.date').datepicker().on('show', function (ev) {
var today = new Date();
var t = today.getFullYear() + "-" + today.getMonth() + '-' + today.getDate();
$(this).data({ date: t }).datepicker('update');
});
console.log('viewAttached');
console.log(view);
// should this move to the activate function?
lookupInit();
},
activate: function (data) {
console.log('activate');
console.log(data);
var id = data.id || undefined;
if (id !== undefined) {
router.isNavigating(true);
http.json('/api/user/' + id)
.done(function (response) {
ko.viewmodel.updateFromModel(vm.userInfo, response);
router.isNavigating(false);
});
}
}
};
【问题讨论】:
标签: single-page-application durandal singlepage