我想知道为什么以下只适用于脚本1和3,而不适用于2.我想使用它,因为在我的项目中我不能使用$ scope。
谢谢!
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.min.js"></script>
<!DOCTYPE html> <!-- -->
<html ng-app="app">
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.min.js"></script>
<meta charset="utf-8">
<title>Modelo</title>
</head>
<body>
<div ng-controller="AppCtrl">
Nombre: {{ name}}
<script type="text/javascript">
var app=angular.module("app",[]);
function AppCtrl($scope) {
$scope.name= "Bob";
}
</script>
</div>
<br/>
<div ng-controller="MyCtrl">
Nombre: {{ name }}
<script type="text/javascript">
var app= angular.module("app",[]);
var MyCtrl = function() {
this.name = 'Nico';
}
app.controller('MyCtrl',MyCtrl);
</script>
</div>
<br/>
<div ng-controller="Algo as and">
Nombre: {{and.name}}
<script type="text/javascript">
//angular.controller('Algo',Algo);
function Algo() {
var vm = this;
vm.name = "Nicolas";
}
</script>
</div>
</body>
</html>
如果难以理解,请告诉我。
原谅我的英语。
答案 0 :(得分:0)
ng-controller
使用控制器的构造函数。在第一和第三种情况下,我们有控制器的构造函数。但在第二种情况下,它只是一个变量。所以,它不会起作用。
ng-controller="myCtrl"
当你定义这样的东西时,angular会尝试找到myctrl
的构造函数。如果,function myCtrl(){}
在那里,它可以正常工作。这就是第一和第三种情况。
当有事件观察者时,额外使用$scope
而不是this
。但我们可以避免它们。了解更多信息https://johnpapa.net/do-you-like-your-angular-controllers-with-or-without-sugar/您可以了解使用哪一个。
答案 1 :(得分:0)
要通过this
访问$scope
,您必须使用controller as syntax,这是您的第三个示例。但是用法可能略有不同,请参阅上面的doc链接,例如代码。
This post在实际开发中谈到控制器的优点作为语法,你可能想看看。