首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >角控制器初始化时调用飞镖函数

角控制器初始化时调用飞镖函数
EN

Stack Overflow用户
提问于 2014-10-04 17:24:42
回答 2查看 172关注 0票数 1

我试图在AngularJS控制器初始化中调用dart函数,但我得到了ReferenceError: myFunction is not defined

index.dart

代码语言:javascript
复制
import 'dart:js';

myDartFunction() {
  return 42;
}

main() {
  context['myFunction'] = (JsObject exchange) {
    exchange['output'] = myDartFunction();
  };
}

我使用AngularJS的html:

代码语言:javascript
复制
<!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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-05 11:16:59

我发现,可以使用window.onload,这是在我的dart函数导出到JS之后调用的。然后我使用$scope.$apply来更改我的范围变量。

代码语言:javascript
复制
angular.module("MyApp", []).controller('MyCtrl', function($scope) {
    window.onload = function () {
        $scope.$apply(function () {
            var exchange = {};
            myFunction(exchange);
            $scope.var = exchange['output'];
        });
    }
});
票数 1
EN

Stack Overflow用户

发布于 2014-10-04 20:50:30

我建议在函数创建后从Dart触发一个事件,并将JavaScript中的代码作为该事件的事件处理程序执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26195249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档