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

时间:2017-04-26 15:48:32

标签: javascript angularjs

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

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

现在,我的调用功能代码位于 view.html 文件中,底部包含 controller.js 。我简单地称这样的方法。        someFunction(value);

5 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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);

答案 2 :(得分:0)

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

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

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

您的view.html

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

答案 3 :(得分:0)

您可以在控制器中调用该函数。参见下面,控制器定义中的最后一行是函数调用。每次调用控制器时都会调用它。

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

$scope.someFunction();
});

答案 4 :(得分:-1)

在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数据。

相关问题