将数据从控制器传递到Ember中的路由

时间:2014-12-11 03:53:36

标签: javascript ember.js

我正在试图弄清楚从控制器接收的数据如何在Ember.js中的不同路线中使用。

我有一个这样的控制器,正在进行Ajax调用,成功后调用successCallback函数:

App.LoginController = Ember.ArrayController.extend({
  ...
  function successCallback(json){
    var userData = json;
    self.transitionToRoute('dashboard');
  }
  ...
});

我正在尝试在LoginController中检索此userData并在仪表板视图中使用它。

App.DashboardRoute = Ember.Route.extend({
  model: function(){
    return this.controllerFor('login').get('userData');
  }
});

我已经尝试安慰this.controllerFor('login').get('userData');的结果,但没有任何回报。但是在LoginController中转换之前安慰数据会显示数据确实已分配给变量userData

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:2)

var userData = json;

userData声明为局部变量,一旦离开方法就会失去范围。您需要在控制器上具有userData属性,然后使用

进行设置

this.set('userData', value);

然后,该值将保持不变并在仪表板路径中可用。

查看工作示例here