【问题标题】:Durandal Composition杜兰达尔组成
【发布时间】:2013-08-31 19:33:42
【问题描述】:
<div>
<div data-bind="compose:'viewmodels/header'"></div>
</div>

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

【问题讨论】:

    标签: composition durandal


    【解决方案1】:

    是的,你可以像这样传递activationData:

    compose: {
                                    model:'yourModel',
                                    view: 'yourView',
                                    activationData:  [param1, param2],
                                    activate: true } 
    

    【讨论】:

    • 如何访问activate方法中传入的参数?
    • 喜欢 {activate: function(param1, param2){ console.log([param1,param2])}}
    • 是的,我之前确实尝试过,但即使我尝试传递一个像 10 这样的常量值,我仍然在激活函数中得到未定义的值。
    • 你更新到最新版本的 durandal 了吗? 2.0.1?也许是一个错误?
    • @user2585299,如果您仍有问题,可以发布您的视图模型。
    【解决方案2】:

    我不相信您可以将数组作为 ActivationData 传递。但是您可以在 JavaScript 对象中传递一个数组。我似乎记得在某个地方读过一些关于那个的东西。

    【讨论】:

      【解决方案3】:

      在 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-03-19
        • 2013-10-19
        • 1970-01-01
        • 2013-04-22
        • 2013-10-21
        • 2014-01-31
        • 1970-01-01
        • 1970-01-01
        • 2013-11-16
        相关资源
        最近更新 更多