有人可以帮助我如何将生成的预编译把手显示到特定视图吗?
var aboutData = [{...},...];
App.Router.map(function() {
this.resource('about);
});
// When navigating to url: www.../#/about
// This whole thing generates a view appended to the body
// I want the generated handlebars to be appended somewhere specific
App.aboutDataRoute = Ember.Route.extend({
model: function() {
return aboutData;
}
});
答案 0 :(得分:1)
有几件事:
Naming Conventions:由于您在About
中创建了about
资源,因此应该将您的路由称为Router
。路径名称将匹配如下结构:
App.Router.map(function() {
this.resource('about', function() {
this.route('data');
});
});
在这种情况下,你会有一些隐含的路由以及你将以声明方式创建的路由(更多关于它here,here和here,尽管第二个链接是旧的)。但基本上,使用此路由器定义,名称AboutDataRoute
将起作用,因为根据惯例,此名称将连接父(About)和子(Data)路由的名称,并使用后缀Route
。使用您定义的路由,一旦转到~/#/about
,Ember将忽略您创建的路由类,并为该路由动态生成默认实现(您可以使用inspector查看),因为这与惯例不符。
Case Sensitivity:通常,您应该使用PascalCase
来命名大多数内容,但您的身份是camelCase
。请尝试阅读有关命名约定的更多信息。
至于你的问题,你可以在不同的元素中渲染应用程序,没问题。只是body
被设置为Application#rootElement
中的默认值。您可以这样更改:
App = Em.Application.create({
rootElement: '#selector'
});
其中#selector
在这种情况下可以是DOM中的任何元素。
请记住,应用程序视图应该在“this”或“that”DOM元素中呈现。所有其他视图都是应用程序视图的某种类型的子项(直接或间接),因此它们将在{{outlet}}
中呈现,因此您应该在Application
具体类中执行此操作。