5

angular.dart コンポーネントを次のように定義しました。

@NgComponent(
    selector: 'dartcomp',
    templateUrl: 'dartComp.html',
    publishAs: 'ctrl',
    map: const
    { 
      'val' : '@val'
    }
)
class DartComp
{ 
  String val;
  calc(a,b) =>a+b;
}

HTML での使用法は次のとおりです。

 <dartcomp id="dc"></dartcomp> 

メイン ダーツから angular.dart コンポーネントの属性 val またはメソッド calc() にアクセスする方法

のようなコンポーネントへの呼び出し

querySelector("#dc").val = "Frank";

投げる:

クラス 'UnknownElement' にはインスタンス セッター 'val=' がありません。

NoSuchMethodError : method not found: 'val='
Receiver: Instance of 'UnknownElement'
Arguments: ["Frank"]

何が間違い?

4

2 に答える 2

0

私は別のアプローチを試みました。

コンポーネントの静的マップにコンポーネントのインスタンスを保存して、後で main.dart でコンポーネントにアクセスできるようにします。

@NgComponent(
    selector: 'dartcomp',
    templateUrl: 'dartComp.html',
    publishAs: 'ctrl',
    map: const
    { 'val' : '@val',
      'id'  : '@id'
    }

)
class DartComp implements NgAttachAware
{ static Map<String,DartComp> comp = new Map();

  String id;
  String val;

  void attach()
  { comp[id]=this; }
}

コンポーネントhtml:

<span> Component val:{{ctrl.val}}:   </span>

index.html に 2 つのコンポーネントを配置します

<dartcomp id="dc1"></dartcomp>
<dartcomp id="dc2" val="max"></dartcomp>

main.dart で、コンポーネント dc1 の val 属性を変更しようとしています

DartComp.comp['dc1'].val="frank";

しかし、ブラウザでは変化が見えません。このような問題を解決する方法はありますか?

于 2014-01-16T22:31:42.027 に答える