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

我正在使用 Durandal 组合,如上面的代码行所示。是否可以在使用组合时将一些额外的参数传递给我的视图模型?例如,通常在 main.js 文件中传递的 'durandal/app'、'durandal/viewLocator'、'durandal/system' 参数?

4

3 回答 3

3

Yes you can pass activationData like:

compose: {
                                model:'yourModel',
                                view: 'yourView',
                                activationData:  [param1, param2],
                                activate: true } 
于 2013-08-28T16:30:36.517 回答
0

I don't believe you can pass an array as ActivationData. But you can pass an array inside of a JavaScript object. I seem to recall reading something about that somewhere.

于 2014-02-24T17:17:49.823 回答
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();
            }
        });
于 2014-08-06T20:15:38.513 回答