我试图在AngularJS控制器初始化中调用dart函数,但我得到了ReferenceError: myFunction is not defined。
index.dart
import 'dart:js';
myDartFunction() {
return 42;
}
main() {
context['myFunction'] = (JsObject exchange) {
exchange['output'] = myDartFunction();
};
}我使用AngularJS的html:
<!DOCTYPE html>
<html ng-app="MyApp">
<head lang="en">
<meta charset="UTF-8">
<title>My Title</title>
</head>
<body>
<div ng-controller="MyCtrl">
<p>{{var}}</p>
</div>
<script type="application/dart" src="index.dart"></script>
<script type="application/javascript" src="../packages/browser/dart.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.js"></script>
<script>
angular.module("MyApp", []).controller('MyCtrl', function($scope) {
var exchange = {};
myFunction(exchange);
$scope.var = exchange['output'];
});
</script>
</body>
</html>在我看来,当控制器初始化时,context['myFunction']还没有被设置。我如何等待它并初始化$scope.var?
发布于 2014-10-05 11:16:59
我发现,可以使用window.onload,这是在我的dart函数导出到JS之后调用的。然后我使用$scope.$apply来更改我的范围变量。
angular.module("MyApp", []).controller('MyCtrl', function($scope) {
window.onload = function () {
$scope.$apply(function () {
var exchange = {};
myFunction(exchange);
$scope.var = exchange['output'];
});
}
});发布于 2014-10-04 20:50:30
我建议在函数创建后从Dart触发一个事件,并将JavaScript中的代码作为该事件的事件处理程序执行。
https://stackoverflow.com/questions/26195249
复制相似问题