2013-12-10 61 views
1

我想从角度飞镖应用程序中访问现有的JavaScript库。推荐的方法是什么?有点像dart:js如何从角度飞镖访问现有的JavaScript库

在此先感谢您的任何想法。

编辑:做了一些测试。看起来dart:js不介意在angular.dart中导入(btw,我应该是importing 'dart:js'还是'package:js/js.dart'?如果有的话,有什么区别?)。

由于在角度上你通过模块导入JavaScript库,并通过在dart中导入,所以如果角度飞镖的文档可以清楚地解决这个问题(可能有一些例子?),这将是很多人都感兴趣的问题。

+0

应该删除angularjs标记,因为在这里不适用。另外,考虑扩大你的问题,包括你想要访问的库,更广泛地说,你正在努力完成什么。 – Fourth

+0

(1)我恐怕没有办法(还)去做我在角镖中所要求的,所以我在(不可否认的是,远程)情况下标记'角度'有一些其他非飞镖(2)问题是关于一般方法,而不是任何特定的库。 – alearg

回答

2

确实有图书馆的名字dart:js它很好的从飞镖访问数据和调用JavaScript函数。只需使用context['property']context['property'].callMethod(name, [args])即可。

从JavaScript到dart的通信现在只能通过DOM或回调进行。首先是设置一些元素属性(或类)并检测飞镖中的变化。回调工作要好得多,你需要从dart传递函数的参数中调用javascript函数。

//js 
function bindEvent (eventName, cb) 
{ 
    //call dart function 
    cb("Triggering event: " + eventName); 
} 
//dart 
void onJsEvent(Object o, String message) 
{ 
    print("Callback called with this = $o and message = $message"); 
} 

var callback = new JsFunction.withThis(onJsEvent); 
context.callMethod("bindEvent", [ "myEvent", callback ]); 

我认为你将很难映射的角度,因为它使用了大量的自定义对象。 Dart-Js通信只适用于基元,地图{}和数组[]

+1

[dart:js](https://api.dartlang.org/docs/channels/stable/latest/dart_js.html)现在支持多种类型的转换,不仅是基元,映射和数组[]。请参阅_Proxying和自动conversion_部分。 –

+0

我的理解是,你的答案适用于飞镖,而不是角镖。我错了吗?如果是这样,你能否提供角度飞镖文件中的参考资料? – alearg

+0

好的,你的意思是说dart:js可以使用角镖吗?对不起,我没有那么早。 – alearg