2017-04-17 44 views
2

經過幾輪研究,我發現有一下情況類似下面沒有明確的答案:如果原來的JS有很多功能,怎麼用它來啓動它們?

我稱之爲「AAA.js」一個js文件,並有簡單的代碼在側這樣的:

var AAA = { 
     listenForMenuLayer: function() { 
      console.log("menu initiated"); 
      $('.nav-menu').on('click', function() { console.log("menu clicked")}); 
     } 

     init: function(){ 
      this.listenForMenuLayer(); 
     } 
    }; 

而在鏢,我寫了這樣設置(使用「鏢:JS」):

js.context['AAA'].callMethod('init'); 

然後,當我運行它,一切都看起來不錯,在「菜單啓動」正確顯示,這意味着'李stenForMenuLayer'開始了,但是當點擊'.nav-menu'時,沒有任何事發生。 (我檢查了很多次,沒有拼寫錯誤或其他)

我的問題是:Dart可以接受這種外部JS事件的啓動嗎?或者我們應該重新寫這些JS事件,請告知,非常感謝。

更新: 我發現,如果我們寫的js代碼類似上面,jQuery的將不能正常啓動,這意味着所有的功能與「$」開頭將不起作用。

+1

從我所知,這應該工作,你有沒有嘗試登錄的'$返回'(「NAV菜單。」)看看它是否存在?你有沒有嘗試使用package:js https://pub.dartlang.org/packages/js,他們推薦使用這個包來代替dart:js –

+0

@HadrienLejard嗨,謝謝你的回覆,我會試試看。 – Charles

+0

@Charles上次更新。這似乎與Dart無關。也許jquery尚未初始化或類似的東西。 –

回答

1

夥計們,我將它更新爲使用'package:js/js.dart';

@JS('AAA.init') 
external void aInit(); 

那麼一些地方,只是單純的包括後撥打:

aInit(); 
相關問題