Ember 1.0.0 - 无法再从视图访问控制器?

Ies*_*est 12 ember.js

我在render模板中使用了一个帮助器,它使用typeahead呈现一个搜索框.

基本上(为简洁起见,删除了代码):

script(type='text/x-handlebars', data-template-name='index')
    {{render search}}

script(type='text/x-handlebars', data-template-name='search')
    {{view App.TaggableInput valueBinding="searchText"}}
Run Code Online (Sandbox Code Playgroud)

这让我SearchController分开了IndexController.

在里面App.TaggableInput我抓紧searchController去做一些关于keyUp事件的检查:

App.TaggableInput = Ember.TextField.extend({
    keyUp: function(e){
        var controller = this.get('controller');
        // Do stuff with the controller
    }
});
Run Code Online (Sandbox Code Playgroud)

在Ember RC7上,我可以按照您的预期访问视图内的控制器this.get('controller').get('searchText').

但是在Ember 1.0.0中this.get('controller')返回视图,无论我做什么我都无法得到searchController.

我在ember网站上找不到任何有关改变或我应该做什么的相关信息......现在我坚持使用RC7.

有任何想法吗?今天早上我花了几个小时才弄清楚它.谢谢.

更新:已修复!

我换出this.get('controller')this.get('targetObject'),它和以前一样.通过最近在ember源中的提交来仔细阅读它...

谢谢你们的建议!

spl*_*tne 5

我想在你的代码中

App.TaggableInput = Ember.TextField.extend({
    keyUp: function(e){
        var controller = this.get('controller');
        // Do stuff with the controller
    }
});
Run Code Online (Sandbox Code Playgroud)

这条线

 var controller = this.get('controller');
Run Code Online (Sandbox Code Playgroud)

获取与您的(子视图)关联的控制器

尝试使用此行代替访问路径的控制器:

 var controller = this.get('parentView.controller');
Run Code Online (Sandbox Code Playgroud)


mav*_*ein 0

我认为 Ember 并没有改变它的行为。我创建了一个JSBin,在其中我成功地获取了控制器。

我所做的是创建一个简单的视图并通过{{render}}助手显示它:

看法:

App.FooView = Ember.TextField.extend({
  didInsertElement : function(){
    console.log(this.get("controller.constructor"));
    console.log(this.get("context.constructor"));
  }
});
Run Code Online (Sandbox Code Playgroud)

模板:

{{render foo}}
Run Code Online (Sandbox Code Playgroud)

第一个日志语句显示了关联的控制器。你能看出我的代码和你的代码之间有什么概念上的区别吗?