Durandal组成

时间:2013-08-28 15:56:46

标签: composition durandal

<div>
<div data-bind="compose:'viewmodels/header'"></div>
</div>

我正在使用Durandal Composition,如上面的代码行所示。是否可以在使用合成时将一些其他参数传递给我的viewmodel?例如,'durandal / app','durandal / viewLocator','durandal / system'参数通常在main.js文件中传递?

3 个答案:

答案 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();
            }
        });