2014-08-29 75 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