Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.JS+;Require.JS—;根据管线渲染特定视图_Ember.js_Requirejs_Javascript Framework - Fatal编程技术网

Ember.JS+;Require.JS—;根据管线渲染特定视图

Ember.JS+;Require.JS—;根据管线渲染特定视图,ember.js,requirejs,javascript-framework,Ember.js,Requirejs,Javascript Framework,我正在试用Ember.JS,到目前为止,我在Require.JS中使用它时遇到了一个非常困难的过程,即使使用了一个(非常)基本的示例 首先,我想说Require.JS应该(我认为)改善我在Ember.JS中看到的两个弱点: 组织应用程序,特别是在单独的js文件中 不加载不必要的代码 我基本上是想显示一个带有页眉/内容/页脚的应用程序。因此,当我创建应用程序时,我绑定了ApplicationController和ApplicationView,而该视图处理模板。这在显示(相当容易)页眉和页脚方

我正在试用Ember.JS,到目前为止,我在Require.JS中使用它时遇到了一个非常困难的过程,即使使用了一个(非常)基本的示例

首先,我想说Require.JS应该(我认为)改善我在Ember.JS中看到的两个弱点:

  • 组织应用程序,特别是在单独的js文件中
  • 不加载不必要的代码
我基本上是想显示一个带有页眉/内容/页脚的应用程序。因此,当我创建应用程序时,我绑定了ApplicationController和ApplicationView,而该视图处理模板。这在显示(相当容易)页眉和页脚方面非常有效

然后,我尝试为索引呈现一个模板(例如),我想动态地加载IndexView/IndexController(例如),并用路由绑定它。这就是我最艰难的时刻

我找到了一种简单的方法,将IndexView直接设置为App.IndexView,但这个解决方案的问题是,如果我加载IndexView,我也会加载索引模板文件内容(使用text.js插件)。对于我的示例来说,这是可以的,但是由于我正在尝试构建一个复杂的网站,这意味着在加载网站时加载所有模板,这正是Require.JS试图避免的


我的错误在哪里?如何根据路由动态加载模板?

编辑:在使用view.append()注入时,实际上不需要在主html文档中声明占位符

我一直在努力解决同样的问题,最终我找到了一种方法,可以通过路由器、控制器、视图和模板动态加载它们

这是我的主“embermain.js”文件:

以下是我的AboutController:

require(
    ['app/view/AboutView'],
    function (view) {
        var controller = MyRanks.AboutController = Ember.Controller.extend({
        });
        return controller;
    });
以下是我的AboutView:

define(
    ['text!app/templates/about.html'],
    function (template) {
        var view = Ember.View.create({
            template: Ember.Handlebars.compile(template),
            templateName: 'about',
            variable: 'my value',
            didInsertElement: function() {
                console.log( "Yes the view was included");
            }
        });
        view.append();
        return view;
    }
);
下面是关于.html的模板

This is the template {{view.variable}}

希望有帮助!:)

你看过当地人了吗。看起来它能完全解决你的问题?嘿,谢谢你的回答!事实上,不久前我在#emberjs上问了同样的问题,我知道RequireJS在emberjs中是一个不好的做法,主要是因为一个大文件比很多异步调用要好。现在它在这里是有意义的,我使用的是yeoman,它的预设grunt构建任务只是将其混合到一个丑陋的大js文件中,这使得我所有的努力都毫无用处。但另一方面,这并不是我不喜欢它,这肯定不是我的情况,但如果它是一个巨大的应用程序,将导致一个js文件的重量几兆字节,这是最好的方法吗?我也这么认为,但最终我的文件或多或少是40ko,所以我认为在非常罕见的情况下,使用RequireJS可能会有用,但大多数情况下并非如此。
This is the template {{view.variable}}