从索引控制器发送的Ember操作未由索引路由处理

时间:2015-07-17 13:33:15

标签: ember.js

https://emberjs.jsbin.com/depoxiseve/edit?js,output

当观察控制器上的模型更改时,从索引控制器发送操作不会被索引路径处理。它抛出一个没有处理错误的动作。它将在应用程序路由中处理。为什么是这样?是因为索引路线还没有活跃吗?有没有办法让这个工作?

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return ['red', 'yellow', 'blue'];
  },
  actions: {
    test: function() {
      console.log('test');
    }
  }
});

App.IndexController = Ember.Controller.extend({
  test: function() {
    this.send('test');
  }.observes('model')
});

1 个答案:

答案 0 :(得分:0)

目前JSBin似乎已被打破,但我认为如果您希望操作冒泡,则需要在控制器上创建test操作,然后return true那个行动。因为this.send('test');会将测试操作发送到this,实际上是控制器。

所以:

App.IndexRoute = Ember.Route.extend({
 model: function() {
    return ['red', 'yellow', 'blue'];
  },
  actions: {
    test: function() {
      console.log('test');
    }
  }
});

App.IndexController = Ember.Controller.extend({
  test: function() {
    this.send('test');
  }.observes('model'),
  actions: {
    test: function() {
      return true;
    }
  }
});

P.S。你想做什么?如果可能的话,现在通常建议尽量避免使用观察员(看起来性能问题)。