2017-04-26 41 views
0

如何从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);

+0

阅读[角服务]的文档(https://docs.angularjs.org/guide/services)在按钮 –

+0

添加属性NG点击= “someFunction( '值')” –

+0

你只应根据您面临的实际问题提出实际的,可回答的问题。如果您提供可用于重现问题的代码,您将得到更好的答案。请参见[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 – georgeawg

回答

0

您将需要使用某种指令 - ng-clickng-initng-change等,您将无法访问角范围之外,这些裸露的功能。

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

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> 
0

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

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

$scope.someFunction(); 
});