0

我们正在使用 kendoui 移动框架和 icenium 创建一个移动混合应用程序。我知道这是一个单页应用程序,里面有很多视图。但是,如果我们添加大量视图 index.html 会变得非常大并且难以维护。我想知道是否有办法将视图组织到单个文件中,并以某种方式将它们包含到主页中。类似于 asp.net 中的部分视图。我找不到这样做的方法,也许有一些 js 库可以做到这一点?

4

3 回答 3

2

您不需要外部库来实现这一点。Kendo 使用称为远程视图的功能开箱即用地支持此功能。您可以在 index.html 中拥有主视图,在 other.html 文件中拥有其他视图。请参阅此处的文档:http ://docs.kendoui.c​​om/getting-started/mobile/application#remote-views

只需添加不带# 定义远程视图的文件名(包括路径) 。

于 2013-02-23T22:59:31.150 回答
1

为此,RequireJS 有一个文本插件。使用它,您可以像加载 Javascript 依赖项一样加载 html、模板或其他文本文件。一个人为的例子:

define([
  "lib/underscore",
  "lib/backbone",  
  "text!views/template.html"
], 

function (_, Backbone, template) {
  return Backbone.View.extend({

    template: _.template(template),

    initialize: function() {
      this.listenTo(this.model, "change", this.render);
    },

    render: function() {
      this.$el.html(this.template(this.model.toJSON()));
    }
  }); 
});
于 2013-02-23T02:26:28.443 回答
1

你可以使用RequireJS,我没用过,但我知道你可以用,我有这个代码

// The view Loader. Used to asynchronously load views located in separate .html files
    window.templateLoader = {

    load: function(views, callback) {

        var deferreds = [];

        $.each(views, function(index, view) {
            if (uknowLocate.Views[view]) {
                deferreds.push($.get('js/templates/' + view + '.php', function(data) {
                    uknowLocate.Views[view].prototype.template = _.template(data);
                }, 'html'));
            } else {
                console.error(view + " not found");
            }
        });

        $.when.apply(null, deferreds).done(callback);
    }

};

我以这种方式使用它:

uknowLocate.init = function () {
    templateLoader.load(['HomeView', 'MainMenuView',
        'GeofencesNewView',
        'CheckinOnetimeView','CheckinScheduledView','CheckinNewView','CheckinRecurrentView',
        'LocationhistoryView'], function () {
        app = new uknowLocate.Routers.ApplicationRouter();
        Backbone.history.start({pushState:false, root:'/project/folder/'});
    });
};

通过这种方式我加载我的模板,这是用于 Backbone,你可以接受这个想法

于 2013-02-23T02:38:37.683 回答