【问题标题】:Knockout fallback view淘汰赛后备视图
【发布时间】:2017-08-26 16:23:38
【问题描述】:

Durandal、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>

【问题讨论】:

    标签: javascript knockout.js requirejs durandal-2.0 knockout-mvc


    【解决方案1】:

    我认为你最好在你的视图模型中处理这个而不是在你的视图中。 Durandal 允许您对其 compose 绑定使用可观察属性,因此您可以执行以下操作:

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

    当然,尝试加载视图路径两次似乎有点多余,但如果您没有任何其他方法可以知道视图是否存在,那么它可能是您最好的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 2013-03-19
      • 2017-02-11
      相关资源
      最近更新 更多