从Javascript调用AngularJS控制器
Call AngularJS controller from Javascript
我正在客户端加载视图和脚本。我正在努力实现在我的javascript中加载并调用angularjs控制器。
- 加载容器视图(v1.html)、主脚本(例如myscript.js)和angular.js
- myscript.js将在v1.html和angular controller(controller.js)中加载视图(v2.html)
- v2.html为:CCD_ 1
- controller.js为:
angular.module('loadApp', []).controller('loadCtrl', function($scope) {
$scope.load_msg = function(_msg) {
$scope.msg = _msg;
}
});
- 调用myscript.js:
angular.element(document.getElementById('v1_id')).scope().load_msg('Hi')
中的控制器
我得到的错误是Uncaught TypeError: Cannot read property 'load_msg' of undefined
。
有没有想过,我在这里错过了什么?
非常感谢。
您可能还没有等到angular启动(编译)HTML,因此范围不可用。在运行javascript之前使用angular.element(document).ready
。
angular.module('loadApp', []).controller('loadCtrl', function($scope) {
$scope.load_msg = function(_msg) {
$scope.msg = _msg;
}
});
// Wait for angular to be bootstraped
angular.element(document).ready(function () {
var scope = angular.element(document.getElementById('v1_id')).scope();
// Since we are outside of angular world, we need to $apply the scope
scope.$apply(function() {
scope.load_msg('Hi');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div id="v1_id" ng-app="loadApp" ng-controller="loadCtrl">
{{msg}}
</div>
相关文章:
- 修改控制器AngularJS的全局值
- 从控制器Angularjs调用链接函数
- 共享变量和多个控制器AngularJS
- 未定义的控制器AngularJS
- 将模块注入控制器AngularJs
- 使用工厂/服务在控制器AngularJS之间推送数组中的数据
- 如何更新控制器angularjs中的.value
- 调用另一个控制器Angularjs中的控制器
- 如何访问两个控制器AngularJS
- 如何在多个文件中定义控制器 - AngularJs.
- 从父控制器 AngularjS 访问 Popup 控件
- 从同一控制器 Angularjs 中的另一种方法访问$scope变量
- 将数据从服务传递到控制器 AngularJS
- 在控制器 AngularJS 之间共享功能
- 推送通知发送到控制器 Angularjs
- 工厂没有被注入控制器 - angularJS
- 在控制器 AngularJS 之间传递 ID 值
- 闭包中的多个控制器 angularjs.
- 将服务文件中收到的 Rest 数据发送到控制器 angularjs
- 覆盖不同控制器 Angularjs 中的变量