我对ember没有什么基本问题。
这是app:http://emberjs.jsbin.com/qivamuzu/5(点击测试 - 像魅力一样工作,因为模型在内存中 - 在索引页面中加载)
但是当你直接尝试#test页面http://emberjs.jsbin.com/qivamuzu/5#/test时,所有数据都会消失(这很糟糕 - 不会触发索引路由和加载模型)。我关注这个问题Why isn't my ember.js route model being called?但对我没有帮助。
我需要在其他模板中使用带模型的模板 - 我使用{{render index}}但我不确定要使用什么以及如何使用。请帮助我,我被卡住了。
答案 0 :(得分:1)
我对你究竟要做什么感到有点不清楚。
如果您只是尝试使用不同路径(和模板)的相同模型数据,那么您可以在路径定义中明确设置模型数据相同:
App = Ember.Application.create();
App.Router.map(function() {
this.route('test');
});
var myModelData = ['red', 'yellow', 'blue'];
App.IndexRoute = Ember.Route.extend({
model : function(){
return myModelData;
}
});
App.TestRoute = Ember.Route.extend({
model : function(){
return myModelData;
}
});
这是一个有效的JSBin示例:
编辑:可提供帮助的其他信息
好的,还有一次刺伤它=)当您直接导航到test
页面时,没有数据,因为TestRoute正在使用尚未加载的IndexRoute中的模型数据。你可以做的是通过从ApplicationRoute初始化它来强制创建IndexController和模型,当你第一次去你的应用程序中的任何路径时,它总会被调用。
首先你必须生成控制器,因为它还不存在。
this.generateController('index');
然后你可以得到控制器并设置它的模型数据:
this.controllerFor('index').set('model', ['red','green','blue']);
这是一个工作小提琴,我这次实际测试了它,以确保它直接进入#/test
时有效。我从之前的例子中删除了实际上不需要的额外路线和事物。