2017-04-01 10 views
-1

Durandal, RequireJS, KnockoutJSKnockout Ausweich Ansicht

Ich habe eine generische und eine kundenspezifische Ansicht in meinem Projekt.

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

Ich möchte die kundenspezifische Ansicht zeigen, wenn sie zeigen, oder auch die Standardansicht vorhanden ist.

So etwas wie das.

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

Antwort

0

Ich denke, Sie sind besser dran in Ihrem View-Modell als aus Ihrer Sicht. Durandal können Sie eine beobachtbare Eigenschaft für seine compose Bindung verwenden, so dass Sie etwas tun können:

<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'); 
     } 
    }); 

} 

Der Versuch, den Blick Weg zweimal scheint ein wenig überflüssig natürlich zu laden, aber Wenn Sie keine andere Möglichkeit haben zu wissen, ob die Ansicht existiert oder nicht, dann ist es vielleicht die beste Wahl.

Verwandte Themen