私はこのようなシェル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>
とシェル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');
}
};
});
問題は、ヘッダーのアクティブ化関数が呼び出されないが、ダッシュボードのアクティブ化関数が呼び出されることです。ヘッダー内のajaxコンテンツをフェッチしてバインドする必要があります。これを実現するにはどうすればよいですか?
シェルにこのロジックを持たせたくないので、このロジックを分離したい
参照用に私のヘッダー(簡略化のために、複雑なモデルを単純なオブザーバブルに変換しました
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
}
};
});
ヘッダーhtmlの最も単純な形式は
<span class="dropdown-notif" data-bind="text: userInfo"></span>