Ember.js刷新页面数据消失后

时间:2014-02-25 13:16:59

标签: templates ember.js

我对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}}但我不确定要使用什么以及如何使用。请帮助我,我被卡住了。

1 个答案:

答案 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示例:

  

http://emberjs.jsbin.com/qivamuzu/8/edit

编辑:可提供帮助的其他信息

好的,还有一次刺伤它=)当您直接导航到test页面时,没有数据,因为TestRoute正在使用尚未加载的IndexRoute中的模型数据。你可以做的是通过从ApplicationRoute初始化它来强制创建IndexController和模型,当你第一次去你的应用程序中的任何路径时,它总会被调用。

首先你必须生成控制器,因为它还不存在。

this.generateController('index');

然后你可以得到控制器并设置它的模型数据:

this.controllerFor('index').set('model', ['red','green','blue']);

这是一个工作小提琴,我这次实际测试了它,以确保它直接进入#/test时有效。我从之前的例子中删除了实际上不需要的额外路线和事物。

  

http://emberjs.jsbin.com/qivamuzu/11#/test