繁体   English   中英

如何从JavaScript调用角度范围函数?

[英]How to call angular scope function from javascript?

我该如何从javascript中调用一些函数。 我有一个具有要从javascript代码调用的功能的主控制器。 例如,在我的控制器文件中,我有这样的代码

app.controller('mainCtrl',function($scope,$http){
     //some code
     $scope.someFunction=function(value){
        // Need value to be accessed here
     } 
});

现在,我用于调用函数的代码在view.html文件中,并且最下面的im包括controller.js 我只是简单地这样调用方法。 someFunction(value);

您将需要使用某种指令ng-clickng-initng-change等。您无法在Angular范围之外访问这些裸函数。

您可以从控制器内部调用它,如下所示:

app.controller('mainCtrl',function($scope,$http){
     //some code
     $scope.someFunction=function(value){
        // Need value to be accessed here
     } 

     $scope.someFunction(34); 
});

如果需要从另一个控制器调用它,则可以传递一个事件

// In your controller
$scope.$on('myEvent', function(event, arg) {
     $scope.someFunction(arg);
});

....

// From the second controller
$scope.emit('myEvent', 34);

您可以使用角度指令从视图中调用控制器。

例如,如果视图中有一个按钮,则可以调用在控制器中定义并添加到作用域的函数。

app.controller('mainCtrl',function($scope){
     //some code
     $scope.someFunction=function(value){
        console.log('hello ' + value);
     } 
});

您的view.html

<a ng-click="someFunction('world')">Call</a>

您可以从控制器内部调用函数。参见下文,控制器定义的最后一行是函数调用。 每当调用控制器时,它将调用。

app.controller('mainCtrl',function($scope,$http){
     //some code
     $scope.someFunction=function(value){
        // Need value to be accessed here
     } 

$scope.someFunction();
});

页面加载完成后,必须从HTML页面内部执行JavaScript。

<script type="application/javascript">
     document.addEventListener("DOMContentLoaded", function(event) { 
       //do work
     });
</script>

一旦有了,就需要使用应用程序名称来获取Angular模块。

<script type="application/javascript">
     document.addEventListener("DOMContentLoaded", function(event) { 
        var app = angular.module('myApp');
     });
</script>

拥有模块后,您可以执行运行操作,该操作将允许您注入工厂,服务和常量。 诸如控制器,指令和组件之类的内容仅供HTML使用。

<script type="application/javascript">
     document.addEventListener("DOMContentLoaded", function(event) { 
        var app = angular.module('myApp');
        app.run(['myService', function(myService) {
             // do your stuff here.
        });
     });
</script>

现在,您还可以通过将myService注入到控制器中来在HTML页面和控制器之间共享myService数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM