指令构造函数中的数据绑定

时间:2014-02-06 14:04:21

标签: dart angular-dart

我正在尝试将函数(this.getData)绑定到指令构造函数中的变量(rating):

@NgDirective(
    selector: '[spreadsheet]',
    map: const {
    'rating' : '<=>rating'
    })

class Spreadsheet {
  dom.Element element;

  Function rating;

  getData(){
    return context.callMethod(r'$', [this.element])
    .callMethod('handsontable', ['getData']);
  }

  Spreadsheet(this.element) {
  context.callMethod(r'$', [this.element])
   .callMethod('handsontable', [new JsObject.jsify(options)]);

  **rating = this.getData;**
  }
}

当我访问它时,似乎“rating”没有分配“this.getData”:

<p spreadsheet rating="rating"></p>
{{rating()}}

“评级”为空。当我执行绑定时不是这种情况,例如当鼠标进入元素时:

...
Spreadsheet(this.element) {
   element
  ..onMouseEnter.listen((ev){this.rating = this.getData;});
...

,当鼠标进入元素时,绑定发生正常(评级不为空)。如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果在构造函数中指定函数,则不需要

 'rating' : '<=>rating'

您可以在标记中调用表达式中的任何方法。 地图或注释(What is the annotation equivalent of map: const {'foo':'&foo'} in AngularDart?What is the equivalent annotation for the old map/@attr in AngularDart?)仅用于同步属性和字段值。

如果您还希望能够从外部分配该功能,则需要@而不是<=>@NgCallback('rating')(请参阅What is the equivalent annotation for the old map/@attr in AngularDart?

您应该设置publishAs: 'ctrl'并使用{{ctrl.rating()}}

调用该方法