在Dart中使用Jquery UI
我试图在Dart中创建一个简单的对话框,我认为使用现有的javascript库更容易。 基本上,你可以找到基本的例子在Dart中使用Jquery UI,jquery,dart,dart-polymer,Jquery,Dart,Dart Polymer,我试图在Dart中创建一个简单的对话框,我认为使用现有的javascript库更容易。 基本上,你可以找到基本的例子 $( "#dialog" ).dialog(); 在互联网和stackoverflow上,你可以找到1000个例子,但没有一个对我有用。 我想这是正确的方法: import 'dart:js' as js; //[...] var jquery = new js.JsObject(js.context['jQuery']); var myob = jquery('#dialog
$( "#dialog" ).dialog();
在互联网和stackoverflow上,你可以找到1000个例子,但没有一个对我有用。
我想这是正确的方法:
import 'dart:js' as js;
//[...]
var jquery = new js.JsObject(js.context['jQuery']);
var myob = jquery('#dialog').dialog();
我得到的只是这个错误:
异常中断:类“JsObject”没有实例方法“call”
我是否误读了Dart的文档?试试:
context.callMethod(r'$', ['#dialog'])
.callMethod('dialog', []);
基本上,有两个库可以与js:and进行互操作。dart:js是在package:js之后创建的,大多数stackoverflow答案都使用package:js,并且仍然有效(不值得对这些答案进行否决…) package:js提供了一个更简单的Api,其代价是增加js的大小(因为package:js使用dart:mirrors和noSuchMethod) 使用包:js:
将'package:js/js.dart'导入为js;
main(){
js.context.$(“#dialog”).dialog();
}
使用dart:js:
将'dart:js'导入为js;
main(){
js.context.callMethod(r'$',['#dialog']).callMethod('dialog');
}
您只需在回拨时收到通知即可。有一个快速解决方案:
class CallbackFunction implements Function {
final Function f;
CallbackFunction(this.f);
call() => throw new StateError('There should always been at least 1 parameter'
'(js this).');
noSuchMethod(Invocation invocation) {
Function.apply(f, []);
}
}
.callMethod("spinner", [new js.JsObject.jsify({
"stop": new js.JsFunction.withThis(new CallbackFunction(recalc),
"page": 1,
"step": 0.1
})])
void recalc(){
print("recalcing");
}
您可以解析调用参数以读取javascript回调参数。来源:“package:js/js.dart”:第238行(可能会更改)感谢您提供关于向下投票的附加说明。我想我可能已经否决了一些,因为我认为它们已经过时了。我可能会在下一次被困在浏览中时自己添加一个答案,以便获得答案。:)(我通常不会这样做,因为对旧问题的新答案没有太多曝光,很不幸)我尝试了第二个答案,它很有效,但我得到了一个警告:event.returnValue已弃用。请改用标准的event.preventDefault()。我不知道该在哪里使用。我认为这个警告来自对话框插件中的js代码。你的答案也是正确的。不幸的是,我不能将两者都标记为正确:(