0

実験として、dart と easyrtc でいくつかのことを試しています。これをダーツバージョンに移植することから始めました(通常、ここにあるnodejsサーバーを介して提供されます)。これは私がそれから作成したものです

編集:コードのどの部分がエラーを引き起こしているかがわかりました。for ループが通過できないデータ オブジェクト プロキシです。通常、setRoomOccupantListener 関数は、ルームの名前と、ルームに接続されているすべてのピアを含むオブジェクトをパラメータとして指定します。クロムでデバッグしたときのオブジェクト レイアウトのスクリーンショットを通常の JavaScript で作成しまし

function connect() {
  easyrtc.setRoomOccupantListener(convertListToButtons);
 }

function convertListToButtons (roomName, data, isPrimary) {
  clearConnectList();
  var otherClientDiv = document.getElementById("otherClients");
  for(var easyrtcid in data) {
    var button = document.createElement("button");
    button.onclick = function(easyrtcid) {
      return function() {
        performCall(easyrtcid);
      };
    }(easyrtcid);

    var label = document.createTextNode(easyrtc.idToName(easyrtcid));
    button.appendChild(label);
    otherClientDiv.appendChild(button);
  }
}

そして、これがクロムでダーツコードをデバッグするときのスクリーンショットです

void connect() {
  easyrtc.setRoomOccupantListener(convertListToButtons);
  } 

void convertListToButtons(roomName, data, isPrimary) {
  clearConnectList();
  var otherClientDiv = querySelector("#otherClients");
  for (var easyrtcid in data) {
    var button = document.createElement("button");
    button.onClick.listen((event) {
      performCall(easyrtcid);
    });

    button.appendText(easyrtc.idToName(easyrtcid));
    otherClientDiv.append(button);
  }
}

これは私が得るエラーです:

Class 'Proxy' has no instance getter 'iterator'.

NoSuchMethodError: method not found: 'iterator' Receiver: Instance of 'Proxy' Arguments: []
#0      Object.noSuchMethod (dart:core-patch/object_patch.dart:45)
#1      P...<omitted>...7)

ここで単純なものが欠けていますか、それともある種の非互換性ですか? ありがとうございました。

4

2 に答える 2

1

あなたも使えるようimport package:js/js.dart';です。使い方がわからない

あなたは試すことができます

import 'dart:js' as js;

https://www.dartlang.org/articles/js-dart-interop/

これも怪しいらしい

easyrtc = js.context.easyrtc; // <== here you have context 'easyrtc'

easyrtc.easyApp('easyrtc.audioVideo', 'selfVideo', new js.JsObject.jsify(['callerVideo']), loginSuccess, loginFailure); 
// and here again 'easyrtc.audioVideo', I guess this is one to much

試す

easyrtc.easyApp.callMethod('audioVideo', ['selfVideo', js.JsObject.jsify(['callerVideo']), loginSuccess, loginFailure]); 

ここで、「audioVideo」は呼び出されたメソッドで、残りは引数です

easyrtc.callMethod('easyApp', ['audioVideo', 'selfVideo', js.JsObject.jsify(['callerVideo']), loginSuccess, loginFailure]); 

「easyApp」は呼び出されたメソッドで、残りは引数です。

コードが JavaScript でどのように見えるかを追加できれば、より良い例を作成できます。

于 2014-05-18T12:59:16.123 に答える