AngularJS:使用注入声明控制器的不同方法

AngularJS:使用注入声明控制器的不同方法,angularjs,Angularjs,我很少看到用angular声明控制器的方法 QS 1 在上面的代码中,没有指定MyCtrl是模块名MyApp的一部分。我们是否需要将控制器添加到MyApp模块?或者它将自动添加到MyApp模块 QS 2 我见过一些人使用[]来注入依赖项,比如[$scope,但有些人不使用第三个括号来注入依赖项 看到这个[$scope]了吗?它有什么特别的含义吗 因为在函数中,我们总是像函数$scope这样指定依赖项名称 那么,请告诉我何时需要使用第三个括号来注入依赖项 还是有语法上的甜言蜜语或个人偏好 代码取自

我很少看到用angular声明控制器的方法

QS 1 在上面的代码中,没有指定MyCtrl是模块名MyApp的一部分。我们是否需要将控制器添加到MyApp模块?或者它将自动添加到MyApp模块

QS 2 我见过一些人使用[]来注入依赖项,比如[$scope,但有些人不使用第三个括号来注入依赖项

看到这个[$scope]了吗?它有什么特别的含义吗

因为在函数中,我们总是像函数$scope这样指定依赖项名称

那么,请告诉我何时需要使用第三个括号来注入依赖项

还是有语法上的甜言蜜语或个人偏好

代码取自

学习角度。所以遇到各种不同的代码,这就是为什么要尝试理解。帮助将不胜感激。谢谢

编辑 我看到了这篇关于同一主题的帖子

他们说,若我们像下面那个样声明控制器,若我们缩小,那个么问题可能会发生,但并没有讨论问题为什么会发生

function MyCtrl($scope) {
    angular.element(document).ready(function () {
        document.getElementById('msg').innerHTML = 'Hello';
    });
}

任何人都可以在上面遮光。谢谢

QS1:是的,你需要像这样订阅控制器

app.controller('SomeName', MyCtrl);

QS2:在minifyingMinification引擎上,缩小引擎将变量名称减少为简写符号,但不更改字符串,缩小引擎将变量名称减少为短名称。例如,$scope将缩短为s等。如果保留$scope,则[$scope,因为$scope现在放在其中,使其成为字符串而不是变量名,因此不会像上面那样转换为短名称,angular知道文件缩小时s的含义。

QS1:是的,您需要像这样订阅控制器

app.controller('SomeName', MyCtrl);

QS2:在minifyingMinification引擎上,缩小引擎将变量名称减少为简写符号,但不更改字符串,缩小引擎将变量名称减少为短名称。例如,$scope将缩短为s等。如果保留$scope,则[$scope,因为$scope现在放在其中,使其成为字符串而不是变量名,因此不会像上面那样转换为短名称,angular知道文件缩小时s的含义。

对于Q1,您应该执行以下操作:

var app=angular.module('MyApp', []);

app.controller("MyBaseCtrl", [MyCtrl]);

function MyCtrl($scope) {
    angular.element(document).ready(function () {
    document.getElementById('msg').innerHTML = 'Hello';
 });
}

对于Q2,有一个结束括号:

app.controller('TestController', ["$scope", function ($scope) {
$scope.TestAngularMethod = function () {
    alert('Hello you are calling angular js method.');
}
}**]**);

我用**和**来强调第一季度你应该这样做:

var app=angular.module('MyApp', []);

app.controller("MyBaseCtrl", [MyCtrl]);

function MyCtrl($scope) {
    angular.element(document).ready(function () {
    document.getElementById('msg').innerHTML = 'Hello';
 });
}

对于Q2,有一个结束括号:

app.controller('TestController', ["$scope", function ($scope) {
$scope.TestAngularMethod = function () {
    alert('Hello you are calling angular js method.');
}
}**]**);

我用**和**来强调这一点。请看这本详细的风格指南,它解释了最佳实践和不同的模式。它将消除混淆

请参阅与您的问题相关的依赖项注入部分


请参阅此详细的样式指南,其中解释了最佳实践和不同的模式。它将消除混淆

请参阅与您的问题相关的依赖项注入部分

我一直推荐。它说您应该使用控制器作为语法:

请注意,它使用的是ViewModel模式。您应该真正阅读该指南

userController.$inject=[**DEPENDENCIES**]类似于['**DEPENDENCIES**'..语法,它用于防止缩小后出错,如Aman所述。

我一直推荐。它说您应该将控制器用作语法:

请注意,它使用的是ViewModel模式。您应该真正阅读该指南


userController.$inject=[**依赖项**]与['**DEPENDENCIES**'…语法,它用于防止缩小后出错,如Aman所述。

Q2当采用这种方法时,我们需要使用第三方括号?第三方括号??有一个开始方括号和一个结束方括号。第三方括号在哪里?我是说当我们需要以这种方式在数组中传递依赖项名称时[$scope]?因为我知道这不是强制性的,但是何时以及为什么我们应该遵循这个模式?如果你知道的话,请分享它。如果我理解正确,你是在问什么时候传入$scope变量?我说我可以在下面这样写,在没有这个括号[]的地方app.controller'TestController',function$scope{$scope.TestAngularMethod=function{alert'Hello you calling angular js method.;}};那么什么时候我应该在声明控制器时使用[]呢?Q2当采用这种方法时,我们需要使用第三个括号?第三个括号?有一个开始的括号和一个结束的括号。第三个括号在哪里?我是说什么时候我们需要以这种方式在数组中传递依赖项名称[$scope]?因为我知道这不是强制性的,但是什么时候以及为什么我们应该遵循这个模式?如果你知道的话,请分享它。如果我理解正确,你是在问什么时候传入$scope变量?我说我可以写下面没有这个括号[]的地方app.controller'TestController',function$scope{$scope.TestAngularMethod=function{alert'Hello您正在调用angular js方法。;}};那么当声明控制器时,我为什么要使用[]呢?
<div ng-controller="UserController as userVm">
    {{userVm.***}}
</div>
angular.module('app', [])
    .controller('UserController', userController);

userController.$inject = [**DEPENDENCIES**];
function userController(**DEPENDENCIES**){
    var vm = this;
}