【发布时间】:2014-11-19 22:37:07
【问题描述】:
给定飞镖代码
class LandingController {
bool hideDiv = false;
void doit() {
new JsObject(context['loginControls']).callMethod('fadeLogin', [() {
print(hideDiv);
hideDiv = true;
print(hideDiv);
print("WTF");
}]);
}
}
调用JS:
var loginControls = function() {
this.fadeLogin = function(func) {
$('#landingHeader').animate({ opacity: 0 }, 500, func);
}
};
应该会影响视图:
<button ng-click="doit();">Click</button>
<div id="landingHeader">Hide me after button click</div>
<div ng-if="ctrl.hideDiv == false"><img src="assets/img/ajax-loader-small.gif">Waiting for div to disappear...</div>
单击按钮并延迟 500 毫秒后,我在控制台中看到“WTF”打印正确。但是,div 仍然可见。一旦发生用户操作,在我的例子中是鼠标点击,div 就会神奇地消失。似乎控制器的值发生了变化,但浏览器没有收到隐藏 div 的更改,因为我已经在匿名回调中打印了控制器的值。
有一个变通方法,但它涉及将 Dart 计时器设置为与 JsObject 调用后在 javascript 中使用的相同的淡入淡出时间,并在这些计时器回调中设置控制器的值 - 很糟糕,但它有效。
【问题讨论】:
标签: dart angular-dart dart-js-interop