我有这样的Shell html
<div data-bind="compose: { model: 'ui/user/viewmodels/header', view: 'infoveave/user/views/header'}"></div>
<div class="container-fluid page-host">
<!--ko compose: {
model: router.activeItem,
afterCompose: router.afterCompose,
transition:'entrance'
}--><!--/ko-->
</div>
Run Code Online (Sandbox Code Playgroud)
和shell js一样
define(function(require) {
var router = require('durandal/plugins/router'),
system = require('durandal/system'),
return {
router: router,
activate: function () {
var self = this;
router.mapAuto('ui/user/viewmodels');
system.log('Sheel Activate Called');
return router.activate('dashboard');
}
};
});
Run Code Online (Sandbox Code Playgroud)
问题是标题上的激活函数没有被调用,但是仪表板上的那个被调用,我必须在标题中获取一些ajax内容并绑定它,我怎样才能实现这一点
我想保持这个逻辑分离,因为我不希望我的shell有这个逻辑
作为参考我的标题(为简化我已将我的复杂模型转换为一个简单的observable
define(function (require) {
var router = require('durandal/plugins/router'),
system = require('durandal/system');
this.userInfo = ko.observable('');
return {
router: router,
activate: function () {
system.log('Got Called Now');
//do some ajax stuff here and update userinfo
}
};
});
Run Code Online (Sandbox Code Playgroud)
标头html的最简单形式是
<span class="dropdown-notif" data-bind="text: userInfo"></span>
Run Code Online (Sandbox Code Playgroud)
我认为你没有激活标题视图模型.
尝试将'activate:true'添加到标题视图compose绑定,如下所示:
<div data-bind="compose: {
model: 'ui/user/viewmodels/header',
view: 'infoveave/user/views/header',
activate: true}">
</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6814 次 |
| 最近记录: |