在没有路由的情况下使用ember呈现视图的正确方法

时间:2013-10-04 15:13:27

标签: ember.js

我真的只想渲染一个模板,这里没什么特别的。

$(document).on('ready',function(){
    console.log('.foot rendering');

    var FooterView = Ember.View.extend({
        templateName: 'footer'
    }).create().appendTo("body");

});

模板呈现正确,但调试器给出了以下错误:

DEPRECATION: Using the defaultContainer is no longer supported. [defaultContainer#lookup]

有人能指出我正确的方式来渲染这个模板吗?

更新 看起来只是直接使用把手模板是这里的方式。

$(document).on('ready',function(){
   console.log('.foot rendering');
   var footTemplate = Handlebars.compile($("#footer").html()); 
   var footContext = {}; // ... 
   $("body").append(footTemplate(footContext)); 
});

2 个答案:

答案 0 :(得分:0)

您可以使用部分帮助器来渲染模板。对于您的情况,请将以下代码放在body标记内。 {{partial "footer"}} 有关详细信息,请参阅此emberjsdoc.

答案 1 :(得分:0)

我认为在没有路由器的情况下使用ember并不是一个好主意。因为路由器在连接插座时在视图中设置容器。

如果您想让您的样本有效,只需将App.__container__传递给您的查看容器属性:

App = Ember.Application.create();

$(document).ready(function(){    
    console.log('.foot rendering');
    App.FooterView = Ember.View.extend({
        templateName: 'footer'
    }).create({ 
        container: App.__container__ 
    }).appendTo("body");
});

但是,这不是一个好的实践。

有关默认容器弃用的讨论在https://gist.github.com/stefanpenner/5627411