2013-06-25 47 views
1

我想添加一個帶dart的事件處理程序給一個觸發js事件的div,所以我通過jquery執行此操作,
當事件被觸發從div中,回調方法如預期的那樣被調用,但是作爲該div的父母的div觸發該事件,被移除。#Dart:當jquery將事件觸發到Dart回調方法時,div被刪除

他們完全從dom中刪除。

js.scoped(() { 
    js.context.$(new js.Callback.once(($) { 
     $('#mySlider').on('change', new js.Callback.many(() { 
      print('Element changed'); 
     })); 
    })); 
}); 

有沒有人知道爲什麼飛鏢或jQuery這樣做?或者哪一方負責?

回答

0

在dartium下面的代碼應該工作:

js.context.$('#mySlider').on('change', new js.Callback.many((_) { 
    print('Element changed'); 
})); 

隨着dart2js(也使用$),你有兩個選擇:

  • 編譯--global-js-name選項可以更改$到別的。
  • 呼叫$.noConflit()鏢腳本之前被加載由jQuery的以釋放用於$和在上面的代碼段改變js.context.$js.context.jQuery

您的代碼一些評論:

  • 它沒有必要再使用js.scoped
  • 回調被調用時帶有一個參數,所以你必須定義它,即使你不使用它(那爲什麼我用_來處理這個參數,我不在乎)
+0

好的,你的意見是非常有幫助的。 js.scoped真的很不方便,5分鐘前$的問題出現,同時在firefox中測試應用程序。但遺憾的是,這並沒有解決我缺少div塊的問題。 – user2520673

+0

我測試了我的代碼片段,它工作得很好。我沒有看到此代碼刪除一個div的任何理由。這種行爲應該來自其他地方。 –