我正在尝试将函数(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;});
...
,当鼠标进入元素时,绑定发生正常(评级不为空)。如何解决这个问题?
答案 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()}}