2017-04-01 3 views
-1

Durandal, RequireJS, KnockoutJSknock-out de vue fallback

J'ai un générique et une vue spécifique client dans mon projet.

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

Je souhaite afficher la vue spécifique au client si elle existe ou bien afficher la vue par défaut.

Quelque chose comme ça.

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

Répondre

0

Je pense que vous êtes mieux de gérer cela dans votre modèle de vue que dans votre vue. Durandal vous permet d'utiliser une propriété observable pour sa Compose liaison, de sorte que vous pouvez faire quelque chose comme ceci:

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

} 

Essayer de charger le chemin de vue semble deux fois un peu redondant bien sûr, mais Si vous n'avez pas d'autre moyen de savoir si la vue existe ou non, cela pourrait être votre meilleur choix.