我是UI新手。我确实在AngularJS中的$scope
之间感到困惑。请参阅下面的代码段。
var mainApp = angular.module("mainApp", []);
mainApp.controller(['$scope', function($scope) {
$scope.name = "John";
}]);
那么,$scope
和function($scope)
之间的区别是什么?我们怎样才能将两者联系起来?是否需要$scope
参数?请举个例子解释我。我真的很感激。
谢谢, 约翰
答案 0 :(得分:1)
1.当您应用以下Angular JS代码的缩小时:
var mainApp = angular.module("mainApp", []);
mainApp.controller(['$scope','$log', function($scope,$log) {
$scope.name = "John";
$log.log("John");
}]);
缩小版本:
var mainApp=angular.module("mainApp",
[]);mainApp.controller(["$scope","$log",function(n,o)
{n.name="John",o.log("John")}]);
2.当您应用以下Angular JS代码的缩小时:
var mainApp = angular.module("mainApp", []);
mainApp.controller(function($scope,$log) {
$scope.name = "John";
$log.log("John");
});
缩小版本:
var mainApp=angular.module("mainApp",[]);mainApp.controller(function(n,a)
{n.name="John",a.log("John")});
3.当您应用以下Angular JS代码的缩小时:
var mainApp = angular.module("mainApp", []);
mainApp.controller(function($log,$scope) {
$scope.name = "John";
$log.log("John");
});
缩小版本:
var mainApp=angular.module("mainApp",[]);mainApp.controller(function(n,a)
{n.name="John",a.log("John")});
你会在Ex-2和Ex-3中注意到你已经互换了$ scope和$ log的依赖位置,那么你的缩小版本也是相同的,这将给你dependency Injection error
,所以我们放置一个字符串值为字符串值无法缩小,如您在Ex-1中所见。
每次定义控制器时都不需要$ scope,但$ scope提供了binding the HTML (view) and the JavaScript (controller).
等重要功能。
https://docs.angularjs.org/guide/scope
答案 1 :(得分:0)
$scope
和function($scope)
之间有什么区别?
当你这样做时
mainApp
.controller(
['$scope', //line 1
function($scope) //line 2
{
}
]);
line 1
中,它引用$scope
,这是一个引用应用程序模型的对象line 2
中,它是变量(也称为 $ scope ),其中注入了(上面提到的) $ scope 对象。此变量可以包含任何其他名称,$scope
用作在整个代码中保留暗示性引用的方法。例如,如果我将其名称更改为myFunnyScope
,您的示例也会起作用:
var mainApp = angular.module("mainApp", []);
mainApp.controller(['$scope', function(myFunnyScope) {
myFunnyScope.name = "John";
}]);
我们如何才能将两者联系起来?
以我之前发布的代码段作为参考,您可以告诉 $ scope 对象正在myFunnyScope
变量中注入,这意味着您使用myFunnyScope
就好像它是$scope
本身。
是否需要
$scope
参数?
只要您需要访问上述 $ scope 对象提供的所有权益,当您执行minification时,需要注入对象([$scope, ...
)进入持有者(function($scope) { ...
),以免破坏AngularJS应用程序。否则,不,你不需要注入对象,但是你必须在函数参数中显式地调用它$scope
,以便AngularJS知道它必须在其中注入$scope
对象。此规则不仅适用于$scope
,还适用于所有其他AngularJS相关服务,工厂等,例如$timeout
,$window$
,$location
等。
如果您不想直接使用$scope
,可能需要阅读AngularJS injection mechanism并考虑使用controller as语法,原因为here。