在视图Ember.js中调用Controller方法

时间:2013-11-23 05:01:01

标签: ember.js controller

我在Ember中有一个控制器,如下所示:

App.TasksController = Ember.ArrayController.extend({
    search: function(term){ ... }
})

我有相关视图,带有自定义文本字段,如下:

App.TasksView = Ember.View.extend({
    searchField: Ember.TextField.extend({
        keyUp: function(){ this.get('controller').search() }
    })
})

但是我得到一个错误,说没有这样的方法。

我在想:

  1. 如何从视图中正确调用控制器中定义的方法?
  2. 如何调试哪个是当前活动的控制器?如果我console.log(this.get('controller'))我得到一个对象,但导航并确切地了解哪个控制器是非常令人困惑的。

1 个答案:

答案 0 :(得分:1)

文本字段的范围与tasksview的范围不同,因此它无权访问控制器。

老实说,处理这个问题的一个更好的方法是将textfield值绑定到某个东西并向其添加一个观察者。当它改变了搜索的火焰时(或者更好的是将它去抖动,这样你就不会在他们输入的每一个字符的情况下解雇请求)

http://emberjs.jsbin.com/IRAXinoP/3/edit