我使用的kendoPanelBar knockout-kendo bindings和我在與Durandals system.acquire方法的問題,我返回淘汰賽對象時,我獲得視圖模型。這似乎只發生在我從面板事件中執行system.aquire的時候。如果我從面板以外的點擊事件運行相同的代碼,一切似乎都可以正常工作。有任何想法嗎?require.js將返回淘汰賽,而不是所需的文件
在ParentViewModel:
this.stepExpand = function (e) {
currentStep = ko.dataFor(e.item);
if (currentStep.isLoaded() != true) {
return system.acquire(currentStep.moduleId()).then(function (**module**) {
var module = new module(); <--getting the ko object here
module.activate();
currentStep.module(module);
});
}
};
父視圖:
<ul data-bind="kendoPanelBar: { expandMode: 'single', widget: panel, expand: stepExpand, select: stepSelected}, foreach: steps">
<li data-bind="kendoPanelItem: {enabled: enabled}, visible: visible">
<span data-bind="text: name"></span>
<div data-bind="compose: module"></div>
</li>
---- ----更新
sample,
樣品呼叫要求()直接因爲這是Durandals system.acquire在內部做的。每當樣本正常工作時,如果發生這種情況,只需點擊刷新即可看到問題。在調試器打開的情況下單擊列表中的第一個<li>
,您將看到它返回knockout而不是所請求的文件。
我用了很多次,只給它一個viewmodel參數。如果我在頁面加載時設置模塊屬性,而不是在擴展事件中一切正常。 – Tyler
延遲加載模塊屬性的原因是什麼? – chafnan
性能問題,我不想加載一個模塊,如果用戶永遠不會去它。在我的真實項目中,可能有15個模塊全部撥打服務電話。 – Tyler