可能重複:
Using Ember.js, how do I run some js after a view is rendered?如何查看完成後運行功能呈現變化
我用JWPlayer展現在我的網站的視頻和JWPlayer使用JavaScript來創建觀衆。
我必須在隱藏視圖更改顯示後運行JWPlayer腳本。
jwplayer('video_space').setup({
'flashplayer': 'player.swf',
'file': 'http://content.longtailvideo.com/videos/flvplayer.flv',
'controlbar': 'bottom',
'width': '470',
'height': '320'
});
我結合我的觀點與價值上的控制器
<script type="text/x-handlebars" >
{{#view Food.previewView }}
Video session
<div {{bindAttr class="showPreview"}}>
<div id='video_space'>Video Loading...</div>
</div>
{{#view SC.Button target="Food.appController" action="show"}}
show
{{/view}}
{{/view}}
</script>
我的JavaScript的所有控制器和視圖
Food = Ember.Application.create();
Food.appController = Ember.Object.create({
showVideo: false,
show: function(){
Food.previewView.set('showVideo', true);
}
});
Food.previewView = Ember.View.extend({
showVideoBinding: 'Food.appController.showVideo',
showPreview: function() {
return this.get('showVideo') ? "show" : "hide";
}.property('showVideo')
});
如果我跑JWPlayer腳本時變「showVideo」可變的視頻會錯誤,因爲$('#video_space')仍然隱藏。
Emberjs有一些像「afterViewChange」或「viewDidChange」的委託方法?
測試代碼 http://jsfiddle.net/apirak/Ay6Fh/
看來,典型的解決方案(使用ISVISIBLE)是不可靠的,由於觀察者排序。我們將在未來幾天內修復此問題或提供明確的生命週期回調。 –