Javascript 我的angular应用程序不工作
我有以下代码:Javascript 我的angular应用程序不工作,javascript,angularjs,Javascript,Angularjs,我有以下代码: <!doctype html> <html ng-app="myApp" xmlns="http://www.w3.org/1999/html"> <head> <meta charset="utf-8"> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></scr
<!doctype html>
<html ng-app="myApp" xmlns="http://www.w3.org/1999/html">
<head>
<meta charset="utf-8">
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
</head>
<body>
<script type="text/javascript">
var app = angular.module("myApp", []);
app.controller("FirstCtrl",function ($scope) {
$scope.count = 0;
$scope.increment = function (){
$scope.count = $scope.count + 1;
}
});
</script >
<div ng-controller="FirstCtrl">
<button class="btn" ng-model="count"
ng-click="increment()">
Click to increment</button>
{{ count }}
</div>
var-app=angular.module(“myApp”,[]);
app.controller(“FirstCtrl”,函数($scope){
$scope.count=0;
$scope.increment=函数(){
$scope.count=$scope.count+1;
}
});
单击以增加
{{count}}
怎么了?
当我在没有控制器的情况下工作时,它可以正常工作,但当我使用app和app.controller时,它将无法工作。为什么呢?我做错什么了吗?你在这里混搭风格。在HTML中,使用控制器作为语法,将
FirstCtrl作为app1
编写。这将在作用域上创建一个名为app1
的对象,它是FirstCtrl
的实例app1.count
,app1.increment()
等将是FirstCtrl
对象的属性
在控制器中,您没有在控制器上创建属性。而是将变量指定为$scope
对象上的属性
使用$scope
有很多优点,因为它本质上是一个全局对象,所以可以从应用程序中的任何地方访问它。然而,它的缺点也根源于它是一个全局对象
您可以更改javascript以匹配控制器的语法,如图所示:
app.controller("FirstCtrl",function () {
//create an alias to this for consistent reference
var app1 = this;
app1.count = 0;
app1.increment = function (){
app1.count += 1;
};
});
或者,您可以将HTML更改为使用$scope
:
<div ng-controller="FirstCtrl">
<button class="btn" ng-model="count"
ng-click="increment()">
Click to increment</button>
{{ count }}
</div>
注意,您不必在HTML中引用$scope
,因为它的存在是隐式的。但是,javascript中的这一行$scope.count=this.count+1;
在这两种情况下都不起作用,因为您正在混合样式
此外,如前所述,控制器as语法要求Angular 1.1.5或更高版本。仅在版本1.1.5中提供“控制器as”语法+
据我所知,当使用“Controller as”时,您希望引用具有指定控制器别名的变量(在您的示例中为“app1”),那么您应该在控制器中使用“this.”语法分配变量,或者访问没有“app1”的变量,然后它将尝试从范围中获取它
好的,那么你的应用程序在做了我在回答中建议的更改后仍然无法工作?如果您在得到一些答案后更改损坏的代码,则无法获得对您和其他人有帮助的准确答案…是的,谢谢,问题是我使用的angular版本,非常感谢您的大力帮助
$scope.count += 1;
var app = angular.module("myApp", []);
app.controller("FirstCtrl",function ($scope) {
this.count = 0;
this.increment = function (){
this.count = this.count + 1;
};
$scope.count = 0;
$scope.increment = function(){
$scope.count = $scope.count + 1;
};
});