2017-04-01 74 views
-1

迪朗達爾,RequireJS,KnockoutJS淘汰賽後備視圖

我有一個通用的,在我的項目客戶特定視圖。

│ faq.html 
│ welcome.html 
│ shell.html 
│ 
├───Client1 
│  faq.html 
│ 
├───Client2 
│  faq.html 
│  welcome.html 

我想告訴客戶特定視圖,如果它存在,否則顯示的默認視圖。

就是這樣。

<div> 
    <div data-bind="compose: { view:'views/Client1/faq.html', fallbackView: 'view/faq.html' }"></div> 
</div> 

回答

0

我認爲你最好在你的視圖模型中比在你的視圖中處理這個更好。迪朗達爾讓您使用可觀察的屬性爲其撰寫綁定,所以你可以做這樣的事情:

<div> 
    <div data-bind="compose: { view: currentView }"></div> 
</div> 

...

viewModel = function(){ 
    var self = this; 
    self.currentView = ko.observable(); 

    self.loadView = require(['text!views/Client1/faq.html', 'text!view/faq.html'], function(clientView, defaultView) { 
     if(clientView) { 
      self.currentView('views/Client1/faq.html'); 
     } else { 
      self.currentView('view/faq.html'); 
     } 
    }); 

} 

試圖加載視圖路徑兩次似乎有點多餘,當然,但如果您沒有任何其他方式知道該視圖是否存在,那麼這可能是您最好的選擇。