使用js互操作将类型化数组缓冲区从dart传递到javascript

使用js互操作将类型化数组缓冲区从dart传递到javascript,dart,dart2js,Dart,Dart2js,尝试调用需要类型化数组的javascript方法 var arrayData=js.array(新的Uint8Array.fromList(data.charCodes)); 使用js.array并不像我期望的那样代理它,我如何才能将类型化数组作为类型化数组传递给dart中的javascript方法?找到的解决方案是创建一个utils.js,并包含未加载到js.context中的对象的构造函数 utils.js: var xArrayBuffer=函数(长度){ 返回新阵列缓冲区(长度); }

尝试调用需要类型化数组的javascript方法

var arrayData=js.array(新的Uint8Array.fromList(data.charCodes));

使用js.array并不像我期望的那样代理它,我如何才能将类型化数组作为类型化数组传递给dart中的javascript方法?

找到的解决方案是创建一个utils.js,并包含未加载到js.context中的对象的构造函数

utils.js:

var xArrayBuffer=函数(长度){
返回新阵列缓冲区(长度);
};
var xUint8Array=函数(buf){
返回新的UINT8阵列(buf);
};
将utils.js包含在index.html中


然后从js.scoped闭包调用示例.省道

js.scoped(){
var jscore=js.context.jscore;
var buf=js.context.xArrayBuffer(data.charCodes.length);
var bufView=js.context.xUint8Array(buf);
对于(var i=0;i
您可以直接从Dart实例化
ArrayBuffer
Uint8Array
javascript对象

如果您只需要
Uint8Array
javascript对象:

js.scoped(){
最终charCodes=“测试”。charCodes;
final bufView=new js.Proxy(js.context.Uint8Array,js.array(charCodes));
//用bufView做点什么
});
如果需要
ArrayBuffer
javascript对象:

js.scoped(){
最终charCodes=“测试”。charCodes;
final buf=new js.Proxy(js.context.ArrayBuffer,charCodes.length);
final bufView=new js.Proxy(js.context.Uint8Array,buf)
..set(js.array(charcode));
//用buf做点什么
});
基本上,每次需要使用
new
javascript操作符时,都必须使用
newjs.Proxy(construtor,…)

警告:在新版本登陆之前,您必须使用以下依赖项来运行上述代码段

依赖项:
js:
吉特:git://github.com/dart-lang/js-interop.git

我检查了您的提交,这也应该适用于UINT16阵列、UINT32阵列,对吗?是的,它应该可以工作。这不是一个bug,而是一个解决办法,因为Chrome中的一些javascript函数(如
ArrayBuffer
Uint8Array
)没有
apply
函数,无法实例化。