Ember.js 无法读取属性';集装箱';在余烬模板中使用linkTo帮助程序时为null

Ember.js 无法读取属性';集装箱';在余烬模板中使用linkTo帮助程序时为null,ember.js,Ember.js,我正在创建一个Ember应用程序,作为从服务器返回的一些HTML的附加组件。我需要这个HTML,这样网站可以被搜索引擎索引,也可以加快用户的初始页面呈现 因此,我的应用程序由几个余烬视图组成,附加到服务器生成的HTML的不同DOM元素。我不对路由使用主模板,所以我将每个路由的renderTemplate函数设置为不做任何事情 我的余烬应用程序绑定到body元素,我可以成功地将自定义视图附加到树下的元素。它的工作原理是: 但当我尝试在模板中使用linkTo helper时,我遇到了一个错误: U

我正在创建一个Ember应用程序,作为从服务器返回的一些HTML的附加组件。我需要这个HTML,这样网站可以被搜索引擎索引,也可以加快用户的初始页面呈现

因此,我的应用程序由几个余烬视图组成,附加到服务器生成的HTML的不同DOM元素。我不对路由使用主模板,所以我将每个路由的renderTemplate函数设置为不做任何事情

我的余烬应用程序绑定到body元素,我可以成功地将自定义视图附加到树下的元素。它的工作原理是:

但当我尝试在模板中使用linkTo helper时,我遇到了一个错误:

Uncaught TypeError: Cannot read property 'container' of null ember-latest.js:32224
在这个函数中:

router: Ember.computed(function() {
     return get(this, 'controller').container.lookup('router:main');
}),

  • 一般来说,余烬可以这样工作-有许多分散的视图吗 通过服务器呈现的HTML
  • 示例代码是如何生成的 修好了吗
  • 我把你的小提琴修好了,快看

    似乎你是余烬的开始者,
    这里有一些给你的建议

  • 您应该有一个
    应用程序
    模板,它将是根模板,所有模板都将在其上呈现
  • 您不应该使用仅用于调试的
    this.container.lookup
    访问
    视图
  • 您不应该将
    视图
    附加到DOM中,这是框架的工作
  • 默认情况下,应用程序将附加到html正文中,如果希望将其附加到其他位置,请在创建
    应用程序时提供
    rootElement
    属性。请参阅配置
    应用程序

    rootElement可以是DOM元素,也可以是与jQuery兼容的选择器字符串。请注意,附加到根元素外部DOM的视图将不会接收事件。如果指定自定义根元素,请确保仅在其中附加视图
  • 不要全局访问任何控制器,如
    App.itemsController.set(“content”,model)
    ,如果要访问路由内的另一个
    控制器,请使用
    this.controllerFor
    ,要访问另一个
    控制器内的
    控制器,请使用
    needs
  • 您不需要创建任何控制器实例,如
    App.itemsController=Ember.ArrayController.extend({}).create()
    框架将处理所有这些问题

  • 我发现我需要额外地将视图和容器绑定在一起,以使这个小提琴工作

      App.itemsView.set("controller", App.itemsController);
      App.itemsController.set("container", this.container);
    
    因此,生成的工作代码片段如下所示:


    再次重申,我正在构建一个混合的Ember应用程序——即,我从服务器返回了一些HTML,一些HTML在多个位置附加了多个Ember视图。这就是为什么我必须手动创建视图,并将它们与控制器等绑定。

    您好,谢谢您的回答。你发送的小提琴链接实际上是我的坏小提琴,所以我看不到你的解决方案。我以前在页面上有几个余烬应用程序,但后来我决定尝试使用一个具有多个视图的应用程序,手动附加到服务器返回的HTML中。这就是为什么我不能按照默认路径使用EmberOops!抱歉,编辑后忘记更新小提琴。现在更改了小提琴链接,现在可以检查了。如果您想在一个页面中有多个余烬应用程序,可以使用
    rootElement
    属性来实现。但是手动附加视图并不是一个好的解决方案。