2014-08-29 53 views
0

我有一个使用jQuery的Emberjs应用程序,并且遇到了奇怪的事情,但也许它是一个特性:)。从emberjs中的其他视图模板获取jquery元素

我有一个主视图模板,我们将其命名为main.hbs

而这个模板有子模板child1.hbs:{{出口child1}}

我知道,每个模板都有它自己的.js文件(main.js和child1.js)

在child1 .js我有这样的代码:

export default Ember.View.extend({ 
    didInsertElement: function() { 
     console.log(Ember.$('.somediv-from-main-hbs').length); 
    } 
}); 

我需要从父视图获取元素,但我不能。 有没有办法从父模板访问元素?

谢谢。

+0

我认为它应该工作!这个$(​​'selector')很有用,但是Ember。$应该是全局jQuery!你能在http://emberjs.jsbin.com上提供一个样本吗? – Lux 2014-08-29 15:31:17

+0

它不起作用。我把jQuery选择器,它没有找到元素 console.log(Ember。$('。chat-header')。height()); //等于0,表示找不到元素,但在父js文件中使用相同的代码console.log(Ember。$('。chat-header')。height()); //等于1,找到元素。但我需要在child.js文件中找到元素。 – vitasya 2014-08-29 16:28:03

+0

那么,请提供样品,我们将能够为您提供帮助! – Lux 2014-08-30 15:35:38

回答

0

是否有变化,您的视图还未呈现?

export default Ember.View.extend({ 
    didInsertElement: function() { 
     this._super(); 

     console.log($('.somediv-from-main-hbs').length); 
    } 
}); 

甚至

export default Ember.View.extend({ 
    didInsertElement: function() { 
     this._super(); 

     Ember.run.next(function() { 
      console.log($('.somediv-from-main-hbs').length); 
     }); 
    } 
}); 
+0

Ember.run.next()的作品,谢谢! – vitasya 2014-09-19 09:13:01

相关问题