<div>
<div data-bind="compose:'viewmodels/header'"></div>
</div>
我正在使用Durandal Composition,如上面的代码行所示。是否可以在使用合成时将一些其他参数传递给我的viewmodel?例如,'durandal / app','durandal / viewLocator','durandal / system'参数通常在main.js文件中传递?
答案 0 :(得分:3)
是的,您可以传递activationData,如:
compose: {
model:'yourModel',
view: 'yourView',
activationData: [param1, param2],
activate: true }
答案 1 :(得分:0)
我不相信你可以将数组作为ActivationData传递。但是您可以在JavaScript对象中传递数组。我好像记得在某个地方读过一些关于它的东西。
答案 2 :(得分:0)
在durandal 1.1版中,在composition.js中的tryActivate方法中调用viewModel.activator()。activateItem()时,不传递activationData。我明确地传递了它以在viewmodel中获取activationData的值,如下所示:
function tryActivate(settings, successCallback) {
if (shouldPerformActivation(settings)) {
viewModel.activator().activateItem(settings.model).then(function (success) {
if (success) {
successCallback();
}
});
} else {
successCallback();
}
}
如上所示,只有viewmodel参数传递给activateItem。我还从那里传递了activationData参数,如下所示:
viewModel.activator().activateItem(settings.model,settings.activationData).then(function (success) {
if (success) {
successCallback();
}
});