Ember.js 访问ember中控制器的根html标记

Ember.js 访问ember中控制器的根html标记,ember.js,Ember.js,下面搜索整个DOM树,而不是我想要的 $('input.js-search') 实际上,我可以做到这一点 this.$('input.js-search') 这告诉jquery根据当前主干视图的根html元素进行搜索。因此,如果屏幕上同时有10个该视图的实例,则每次只返回一个实例,而不是10个ie,即属于该视图的实例 如何在控制器的余烬中执行类似操作?您不能。至少在不安全地访问大量私有/受保护的成员变量的情况下。即使你想这样做,它仍然不能解决你的问题 因此,如果屏幕上同时有10个该视图的实例

下面搜索整个DOM树,而不是我想要的

$('input.js-search')
实际上,我可以做到这一点

this.$('input.js-search')
这告诉jquery根据当前主干视图的根html元素进行搜索。因此,如果屏幕上同时有10个该视图的实例,则每次只返回一个实例,而不是10个ie,即属于该视图的实例


如何在控制器的余烬中执行类似操作?

您不能。至少在不安全地访问大量私有/受保护的成员变量的情况下。即使你想这样做,它仍然不能解决你的问题

因此,如果屏幕上同时有10个该视图的实例,则每次只返回一个实例,而不是10个ie,即属于该视图的实例

控制器可以有多个视图,因此即使存在与此相同的东西。$,也无法解决您的问题


只有视图可以直接访问其DOM内容,因此您必须在视图中执行您需要的任何逻辑,该视图可以访问其控制器。视图有一个$property,因此您可以完全按照您所描述的操作,并使用这个$selector遍历它们的DOM树。

而且,视图通常与每个控制器关联。因此,如果您试图在FooController上工作,请创建一个FooView并在那里进行工作。需要注意的是,在调用didInsertElement之前,元素不会出现在页面中

App.IndexView = Ember.View.extend({
  gitterDone: function(){
    this.$('button').addClass('coolButton');
  }.on('didInsertElement')
});