2013-08-28 49 views
0
<div> 
<div data-bind="compose:'viewmodels/header'"></div> 
</div> 

我正在使用Durandal Composition,如上面的代碼行所示。是否有可能傳遞一些額外的參數到我的視圖模型,而使用組合?例如,「迪朗達爾/應用程序」,「迪朗達爾/ viewLocator」,它們在main.js正常傳遞'迪朗達爾/系統的參數文件?Durandal Composition

回答

2

是的,你可以通過activationData像:

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

我們如何訪問激活方法中傳遞的參數? – user2585299

+0

像{激活:函數(參數1,參數2){執行console.log([參數1,參數2])}} –

+0

是的,我沒有嘗試之前,但我不斷收到值作爲甚至當我嘗試通過激活功能未定義像10一樣的恆定值。 – user2585299

0

我不相信你可以傳遞一個數組作爲ActivationData。但是你可以在JavaScript對象中傳遞一個數組。我似乎回憶起在某個地方閱讀某些東西。

0

在迪朗達爾版本1.1,同時使在composition.js tryActivate方法內viewModel.activator()。activateItem()的調用activationData不通過。我通過它明確地得到在視圖模型activationData的值,如下所示:

function tryActivate(settings, successCallback) { 
    if (shouldPerformActivation(settings)) { 
     viewModel.activator().activateItem(settings.model).then(function (success) { 
      if (success) { 
       successCallback(); 
      } 
     }); 
    } else { 
     successCallback(); 
    } 
} 

只有視圖模型參數傳遞給activateItem由上述可見。我也從那裏通過activationData參數如下:

viewModel.activator().activateItem(settings.model,settings.activationData).then(function (success) { 
      if (success) { 
       successCallback(); 
      } 
     });