0
我正在嘗試使用Ember的retina.js,並且遇到問題。如果Retina.js存在,Retina.js會用@ 2x版本替換img元素,並且只有在頁面刷新時纔會這樣做。顯然,我可以通過img元素循環,併爲AJAX響應創建一個新的RetinaImage實例,這似乎也適用於呈現Ember視圖,但問題在於它在頁面最初加載時會執行兩次。我查看了didInsertElement,但是當視圖插入並重新渲染時,它會觸發。有沒有辦法限制新的RetinaImage(這個)來查看退回?Ember.js只執行重新提交
相關代碼:
Ember.View.reopen({
didInsertElement: function() {
this._super();
$('img').each(function() {
new RetinaImage(this);
});
}
});
感謝您提供有關視圖和組件的提醒。仍然,依靠didInsertElement會導致代碼運行兩次,如果有人用視圖/組件刷新頁面。有沒有辦法只在視圖重新渲染或路由轉換爲?時運行此代碼?基本上我不想在視圖插入DOM時執行此代碼,只能重新渲染。 –
我不確定這是一個真實的陳述。你能舉一個例子嗎?這裏有一個相反的例子:http://emberjs.jsbin.com/cubeninu/1/edit,你是什麼意思,只有在重新執行它? – Kingpin2k
我的猜測是,這是如何編寫Retina.js的問題。 Retina.js被封裝在一個IIFE中,所以它不需要額外的調用來運行。因此,當用戶加載頁面時,Retina.js會立即用2x版本替換圖像,並相應地設置寬度和高度。因此,我正在經歷從初始頁面加載的交換,然後做新的RetinaImage(this)再次用2x版本交換2x版本,從而使用2x圖像的實際寬度和高度,而不是非視網膜圖像。接下來的評論中繼續.. –