无法编写基本控制器 AngularJS
Cannot write a basic controller AngularJS
如果我的问题太基础,请原谅我。我正在学习 AngularJS 的控制器。
这是项目结构。
这是我的 html:
<!doctype html>
<html ng-app>
<head>
<script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js"></script>
<script src="js/controllers.js" />
</head>
<body>
<div ng-controller="numberController">
<input type = "text" ng-model = "number.number1" placeholder = "Enter a number here">
<input type = "text" ng-model = "number.number2" placeholder = "Enter another number here">
{{number.number1}} + {{number.number2}} = {{number.sumIt()}}
</div>
</body>
</html>
这是我的控制器:
function numberController($scope) {
$scope.number = {
number1: 0,
number2: 0,
sumIt: function() {
var numberObject;
numberObject = $scope.number;
return parseInt(numberObject.number1) + parseInt(numberObject.number2);
}
};
}
网页甚至没有加载。
我哪里做错了?
编辑:
我得到的错误:我得到这个错误:https://docs.angularjs.org/error/$injector/modulerr?p0=sa-app&p1=Error:%20%5B$injector:nomod%5D%20http:% 2F%2Ferrors.angularjs.org%2F1.3.3%2F$injector%2Fnomod%3Fp0%3Dsa-app%0A%20%20%20%20at%20Error%20(native)%0A%20%20%20%20at %20https:%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.3%2Fangular.min.js:6:416%0A%20%20%20%20at%20https:%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.3%2Fangular.min.js:21:366%0A%20%20%20%20at%20a%20(https:%2F%2Fajax.googleapis.com%2Fajax% 2Flibs%2Fangularjs%2F1.3.3%2Fangular.min.js:21:7)%0A%20%20%20%20at%20https:%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.3% 2Fangular.min.js:21:250%0A%20%20%20%20at%20https:%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.3%2Fangular.min.js:35:105 %0A%20%20%20%20at%20r%20(https:%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.3%2Fangular.min.js:7:302)%0A%20 %20%20%20at%20g%20(https:%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.3%2Fangular.min.js:34:456)%0A%20%20%20 %20at%20Lb%20(https:%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.3%2Fangular.min.js:38:184)%0A%20%20%20%20at%20d %20(https:%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.3%2Fangular.min.js:17:381
我更新的控制器:
var saApp = angular.module("saApp", []);
saApp.controller('numberController', function($scope) {
$scope.number = {
number1: 0,
number2: 0,
sumIt: function() {
var numberObject;
numberObject = $scope.number;
return parseInt(numberObject.number1) + parseInt(numberObject.number2);
}
};
});
我的更新 HTML:
<!doctype html>
<html>
<head>
<script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js"></script>
<script src="js/controllers.js" />
</head>
<body>
<div ng-app = "saApp" ng-controller="numberController">
<input type = "text" ng-model = "number.number1" placeholder = "Enter a number here">
<input type = "text" ng-model = "number.number2" placeholder = "Enter another number here">
{{number.number1}} + {{number.number2}} = {{number.sumIt()}}
</div>
</body>
</html>
你必须定义 angular.module
<html ng-app="myApp">
然后像下面这样写你的控制器
var myApp = angular.module('myApp',[]);
myApp.controller('numberController', ['$scope', function($scope) {
//Your controller code here
}]);
你可以检查工作代码笔Here
Useful link here
1 . Angular docs
2 . TutorialsPoint angular js
您需要先 link 您的应用程序和您的 JS 文件。
将您的标签更改为
并更改您的 controllers.js
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.number = {
number1: 0,
number2: 0,
sumIt: function() {
var numberObject;
numberObject = $scope.number;
return parseInt(numberObject.number1) + parseInt(numberObject.number2);
}
};
});
</script>
如果您右键单击鼠标然后单击检查元素,也可以找到控制台。
你好 像这样写你的程序:-
<!doctype html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular.min.js"></script>
<script>
angular.module("myapp", [])
.controller("NumberController", function($scope, $http) {
$scope.number = {
number1: 0,
number2: 0,
sum:0,
sumIt: function() {
var numberObject;
numberObject = $scope.number;
this.sum = parseInt(numberObject.number1) + parseInt(numberObject.number2);
}
};
} );
</script>
</head>
<body ng-app="myapp">
<div ng-controller="NumberController">
<input type = "text" ng-model = "number.number1" placeholder = "Enter a number here"/>
<input type = "text" ng-model = "number.number2" placeholder = "Enter another number here"/>
<input type = "button" ng-click="number.sumIt()" value="Sum"/>
sum is {{number.sum}}
</div>
</body>
</html>
你的代码不清楚你定义的app模块。来自 angular 文档
// app.js
(function(angular) {
angular.module('ngAppDemo', []).controller('NumberController', function($scope){
$scope.number = {
number1: 0,
number2: 0,
sumIt: function() {
var numberObject;
numberObject = $scope.number;
return parseInt(numberObject.number1) + parseInt(numberObject.number2);
}
};
});
})(window.angular);
请注意,您没有使用 angular 控制器的命名约定,控制器名称以大写字母开头,而 js 函数以小写字母开头( function numberController() - ng-controller="NumberController")
最后在 html 或 body 上插入 ng-app,在 div
上插入控制器
<body ng-app="ngAppDemo">
<div ng-controller="numberController">
var myApp = angular.module('myApp',[]);
myApp.controller('numberqcontroller', function($scope) {
//$scope.number ={};
$scope.number = {
number1: 10,
number2: 0,
sumIt: function() {
var numberObject;
numberObject = $scope.number;
return parseInt(numberObject.number1) + parseInt(numberObject.number2);
}
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<!doctype html>
<html >
<head>
</head>
<body ng-app="myApp">
<div ng-controller="numberqcontroller">
<input type = "text" ng-model = "number.number1" placeholder = "Enter a number here">
<input type = "text" ng-model = "number.number2" placeholder = "Enter another number here">
{{number.number1}} + {{number.number2}} = {{number.sumIt()}}
</div>
</body>
</html>
问题:您使用的是已弃用的控制器声明方法。从至少 1.3 版开始,您不能使用 function <controller>
.
声明控制器
解决方法:
1:声明应用程序 – var app = angular.module('myApp', []);
2:附加控制器
app.controller('numberController', ['$scope', function($scope) {
$scope.number = {
number1: 0,
number2: 0,
sumIt: function() {
var numberObject;
numberObject = $scope.number;
return parseInt(numberObject.number1) + parseInt(numberObject.number2);
}
};
}]);
我修改了您的代码,它使用相同的目录结构。这是 js 文件:
var app = angular.module('myApp', []);
app.controller('numberController', function($scope) {
$scope.number = {
number1: 0,
number2: 0,
sumIt: function() {
var numberObject;
numberObject = $scope.number;
return parseInt(numberObject.number1) + parseInt(numberObject.number2);
}
};
});
和 html :
<!DOCTYPE html>
<html ng-app="myApp">
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="js/controllers.js" > </script>
<body>
<div ng-controller="numberController">
<input type = "text" ng-model = "number.number1" placeholder = "Enter a number here">
<input type = "text" ng-model = "number.number2" placeholder = "Enter another number here">
{{number.number1}} + {{number.number2}} = {{number.sumIt()}}
</div>
</body>
</html>
这个怎么样:
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<div ng-controller="numberController as ctrl">
<input type="number" ng-model="ctrl.number1" placeholder="Enter a number here">
<br>
<input type="number" ng-model="ctrl.number2" placeholder = "Enter another number here">
<br>
<div ng-if="ctrl.number1 && ctrl.number2">
{{ctrl.number1}} + {{ctrl.number2}} = {{ctrl.sum(ctrl.number1, ctrl.number2)}}
</div>
</div>
</body>
</html>
与Javascript:
var myApp = angular.module('myApp',[]);
myApp.controller('numberController', function() {
var vm = this;
vm.number1 = null;
vm.number2 = null;
vm.sum = function(num1, num2) {
return num1 + num2;
};
});
建议使用'controller as'构造。您还应该考虑使用指令(或组件,如果您可以升级到 AngularJs 1.5)而不是使用 ng-controller。
只需在您的控制器中执行此操作
var app = angular.module('myapp', []);
app.controller('numberController', function($scope) {
$scope.number = {
number1 : 0,
number2 : 0,
sumIt : function() {
//no need to copy $scope.number to another variable just simply use like this
return parseInt($scope.number.number1) + parseInt($scope.number.number2);
}
}
});
这是html代码
<body ng-app="myapp">
<div ng-controller="numberController">
<input type = "text" ng-model = "number.number1" placeholder = "Enter a number here"/>
<br /><br />
<input type = "text" ng-model = "number.number2" placeholder = "Enter another number here"/>
<br /><br />
<!- {{number.number1}} + {{number.number2}} = {{number.sumIt()}} no need to do this just simply call the sumIt function like below->
Total = {{number.sumIt()}}
</div>
</body>
最后输出
如果我的问题太基础,请原谅我。我正在学习 AngularJS 的控制器。
这是项目结构。
这是我的 html:
<!doctype html>
<html ng-app>
<head>
<script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js"></script>
<script src="js/controllers.js" />
</head>
<body>
<div ng-controller="numberController">
<input type = "text" ng-model = "number.number1" placeholder = "Enter a number here">
<input type = "text" ng-model = "number.number2" placeholder = "Enter another number here">
{{number.number1}} + {{number.number2}} = {{number.sumIt()}}
</div>
</body>
</html>
这是我的控制器:
function numberController($scope) {
$scope.number = {
number1: 0,
number2: 0,
sumIt: function() {
var numberObject;
numberObject = $scope.number;
return parseInt(numberObject.number1) + parseInt(numberObject.number2);
}
};
}
网页甚至没有加载。
我哪里做错了?
编辑:
我得到的错误:我得到这个错误:https://docs.angularjs.org/error/$injector/modulerr?p0=sa-app&p1=Error:%20%5B$injector:nomod%5D%20http:% 2F%2Ferrors.angularjs.org%2F1.3.3%2F$injector%2Fnomod%3Fp0%3Dsa-app%0A%20%20%20%20at%20Error%20(native)%0A%20%20%20%20at %20https:%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.3%2Fangular.min.js:6:416%0A%20%20%20%20at%20https:%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.3%2Fangular.min.js:21:366%0A%20%20%20%20at%20a%20(https:%2F%2Fajax.googleapis.com%2Fajax% 2Flibs%2Fangularjs%2F1.3.3%2Fangular.min.js:21:7)%0A%20%20%20%20at%20https:%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.3% 2Fangular.min.js:21:250%0A%20%20%20%20at%20https:%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.3%2Fangular.min.js:35:105 %0A%20%20%20%20at%20r%20(https:%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.3%2Fangular.min.js:7:302)%0A%20 %20%20%20at%20g%20(https:%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.3%2Fangular.min.js:34:456)%0A%20%20%20 %20at%20Lb%20(https:%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.3%2Fangular.min.js:38:184)%0A%20%20%20%20at%20d %20(https:%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.3%2Fangular.min.js:17:381
我更新的控制器:
var saApp = angular.module("saApp", []);
saApp.controller('numberController', function($scope) {
$scope.number = {
number1: 0,
number2: 0,
sumIt: function() {
var numberObject;
numberObject = $scope.number;
return parseInt(numberObject.number1) + parseInt(numberObject.number2);
}
};
});
我的更新 HTML:
<!doctype html>
<html>
<head>
<script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js"></script>
<script src="js/controllers.js" />
</head>
<body>
<div ng-app = "saApp" ng-controller="numberController">
<input type = "text" ng-model = "number.number1" placeholder = "Enter a number here">
<input type = "text" ng-model = "number.number2" placeholder = "Enter another number here">
{{number.number1}} + {{number.number2}} = {{number.sumIt()}}
</div>
</body>
</html>
你必须定义 angular.module
<html ng-app="myApp">
然后像下面这样写你的控制器
var myApp = angular.module('myApp',[]);
myApp.controller('numberController', ['$scope', function($scope) {
//Your controller code here
}]);
你可以检查工作代码笔Here
Useful link here
1 . Angular docs
2 . TutorialsPoint angular js
您需要先 link 您的应用程序和您的 JS 文件。 将您的标签更改为 并更改您的 controllers.js
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.number = {
number1: 0,
number2: 0,
sumIt: function() {
var numberObject;
numberObject = $scope.number;
return parseInt(numberObject.number1) + parseInt(numberObject.number2);
}
};
});
</script>
如果您右键单击鼠标然后单击检查元素,也可以找到控制台。
你好 像这样写你的程序:-
<!doctype html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular.min.js"></script>
<script>
angular.module("myapp", [])
.controller("NumberController", function($scope, $http) {
$scope.number = {
number1: 0,
number2: 0,
sum:0,
sumIt: function() {
var numberObject;
numberObject = $scope.number;
this.sum = parseInt(numberObject.number1) + parseInt(numberObject.number2);
}
};
} );
</script>
</head>
<body ng-app="myapp">
<div ng-controller="NumberController">
<input type = "text" ng-model = "number.number1" placeholder = "Enter a number here"/>
<input type = "text" ng-model = "number.number2" placeholder = "Enter another number here"/>
<input type = "button" ng-click="number.sumIt()" value="Sum"/>
sum is {{number.sum}}
</div>
</body>
</html>
你的代码不清楚你定义的app模块。来自 angular 文档
// app.js
(function(angular) {
angular.module('ngAppDemo', []).controller('NumberController', function($scope){
$scope.number = {
number1: 0,
number2: 0,
sumIt: function() {
var numberObject;
numberObject = $scope.number;
return parseInt(numberObject.number1) + parseInt(numberObject.number2);
}
};
});
})(window.angular);
请注意,您没有使用 angular 控制器的命名约定,控制器名称以大写字母开头,而 js 函数以小写字母开头( function numberController() - ng-controller="NumberController")
最后在 html 或 body 上插入 ng-app,在 div
上插入控制器<body ng-app="ngAppDemo">
<div ng-controller="numberController">
var myApp = angular.module('myApp',[]);
myApp.controller('numberqcontroller', function($scope) {
//$scope.number ={};
$scope.number = {
number1: 10,
number2: 0,
sumIt: function() {
var numberObject;
numberObject = $scope.number;
return parseInt(numberObject.number1) + parseInt(numberObject.number2);
}
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<!doctype html>
<html >
<head>
</head>
<body ng-app="myApp">
<div ng-controller="numberqcontroller">
<input type = "text" ng-model = "number.number1" placeholder = "Enter a number here">
<input type = "text" ng-model = "number.number2" placeholder = "Enter another number here">
{{number.number1}} + {{number.number2}} = {{number.sumIt()}}
</div>
</body>
</html>
问题:您使用的是已弃用的控制器声明方法。从至少 1.3 版开始,您不能使用 function <controller>
.
解决方法:
1:声明应用程序 – var app = angular.module('myApp', []);
2:附加控制器
app.controller('numberController', ['$scope', function($scope) {
$scope.number = {
number1: 0,
number2: 0,
sumIt: function() {
var numberObject;
numberObject = $scope.number;
return parseInt(numberObject.number1) + parseInt(numberObject.number2);
}
};
}]);
我修改了您的代码,它使用相同的目录结构。这是 js 文件:
var app = angular.module('myApp', []);
app.controller('numberController', function($scope) {
$scope.number = {
number1: 0,
number2: 0,
sumIt: function() {
var numberObject;
numberObject = $scope.number;
return parseInt(numberObject.number1) + parseInt(numberObject.number2);
}
};
});
和 html :
<!DOCTYPE html>
<html ng-app="myApp">
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="js/controllers.js" > </script>
<body>
<div ng-controller="numberController">
<input type = "text" ng-model = "number.number1" placeholder = "Enter a number here">
<input type = "text" ng-model = "number.number2" placeholder = "Enter another number here">
{{number.number1}} + {{number.number2}} = {{number.sumIt()}}
</div>
</body>
</html>
这个怎么样:
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<div ng-controller="numberController as ctrl">
<input type="number" ng-model="ctrl.number1" placeholder="Enter a number here">
<br>
<input type="number" ng-model="ctrl.number2" placeholder = "Enter another number here">
<br>
<div ng-if="ctrl.number1 && ctrl.number2">
{{ctrl.number1}} + {{ctrl.number2}} = {{ctrl.sum(ctrl.number1, ctrl.number2)}}
</div>
</div>
</body>
</html>
与Javascript:
var myApp = angular.module('myApp',[]);
myApp.controller('numberController', function() {
var vm = this;
vm.number1 = null;
vm.number2 = null;
vm.sum = function(num1, num2) {
return num1 + num2;
};
});
建议使用'controller as'构造。您还应该考虑使用指令(或组件,如果您可以升级到 AngularJs 1.5)而不是使用 ng-controller。
只需在您的控制器中执行此操作
var app = angular.module('myapp', []);
app.controller('numberController', function($scope) {
$scope.number = {
number1 : 0,
number2 : 0,
sumIt : function() {
//no need to copy $scope.number to another variable just simply use like this
return parseInt($scope.number.number1) + parseInt($scope.number.number2);
}
}
});
这是html代码
<body ng-app="myapp">
<div ng-controller="numberController">
<input type = "text" ng-model = "number.number1" placeholder = "Enter a number here"/>
<br /><br />
<input type = "text" ng-model = "number.number2" placeholder = "Enter another number here"/>
<br /><br />
<!- {{number.number1}} + {{number.number2}} = {{number.sumIt()}} no need to do this just simply call the sumIt function like below->
Total = {{number.sumIt()}}
</div>
</body>
最后输出