在 AngularJS 控制器中声明 Function 的方法(controllerAs 方法)

Eln*_*naz 2 javascript function angularjs angularjs-controlleras

我使用控制器作为方法而不是 $scope。我在从 HTML 调用方法时遇到一些问题。那么,问题是,这种方法中的声明和调用函数有多少种方法。

首先:(如果我首先想做某事)

var vm= this ; 
vm.dataOne=[];

function funcOne() {
        myService.serviceFunc()
            .then(function (response) {
                vm.dataOne= response.data;
            });
    };
function activate() {
        funcOne();
        }
    activate();  
Run Code Online (Sandbox Code Playgroud)

第二:(如果我想根据函数返回值初始化变量)

 vm.dataTwo = function () {
        doSomeThing();
 }  
Run Code Online (Sandbox Code Playgroud)

cst*_*992 5

您定义的函数是私有的:

function functionOne() {

}; // Just function body, no need of semicolon
Run Code Online (Sandbox Code Playgroud)

这些称为函数声明。目前,它们只能在您的控制器中访问。

为了能够调用它们,请将它们附加到控制器,以便它们成为控制器变量:

vm.functionOne = functionOne;
Run Code Online (Sandbox Code Playgroud)

这种方法的一个优点是,您可以在实际调用函数后定义它们,而不是使用$scopeor进行定义$this。它们通过提升被识别并被调用。

关于初始化函数的返回值,只需调用它:

vm.someVariable = someFunction();
Run Code Online (Sandbox Code Playgroud)

一些参考:

var functionName = function() {} vs function functionName() {}

JavaScript 中的私有成员

Angular 函数声明、函数表达式和可读代码

角度风格指南