Angular JS 错误
Error in Angular JS
我在我的 asp.net mvc 项目中包含 angular js 但是当我在控制器中调用对象时
angular js 表达式不求值
这里是app.js代码请建议
var app = angular.module('app', []);
app.controller('createController', createController);
这里是 createController 代码
var createController = function ($scope) {
$scope.mydata = 'I work!';
}
这是我在 html 中包含的内容
<html ng-app="app">
<script src="~/Scripts/angular.min.js"></script>
<script src="~/appAjs/app.js"></script>
<script src="~/appAjs/controllers/createController.js"></script>
<div ng-controller="createController">
{{scope.mydata}}
{{6+9}}
您需要在应用模块的上下文中创建控制器。
你的app.js应该只有
angular.module('app', []);
您的 createController 代码应该类似于此
angular.module('app')
.controller('createController', function ($scope) {
$scope.mydata = 'I work!';
});
您需要更改表达式
{{scope.mydata}}
至
{{mydata}}
表达式可以访问作用域,访问作用域对象不需要关键字。
根据你的代码,我只能怀疑两个件事
- 您的 javascript 范围不正确
- 不要在您的 "scope" 代码中使用
scope
一词
第一部分:javascript范围:
始终使用 IIFE,在您的情况下,您的代码应如下所示:
(function(){
var app = angular.module('app', []);
var createController = function ($scope) {
$scope.mydata = 'I work!';
};
app.controller('createController', createController);
}());
第二部分:不要使用scope
这个词
在你的 HTML 中,你不应该使用 scope
这个词,因为它已经在你的控制器中继承了,因为这是你传递给 "view"
的模型
因此,您的代码应如下所示:
<!DOCTYPE html>
<html ng-app="app">
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<div ng-controller="createController">
{{mydata}}
{{6+9}}
</div>
</body>
</html>
结果是:
I work! 15
JSBIN so you can check it out.
中的实时代码
您的 HTML 页面,全部应该如下所示:
如果您只有 一个文件
<!DOCTYPE html>
<html ng-app="app">
<head>
<meta charset="utf-8">
<title>My AngularJs App</title>
</head>
<body>
<!-- HTML -->
<div ng-controller="createController">
{{mydata}}
{{6+9}}
</div>
<!-- AngularJS required -->
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
<!-- AngularJS code -->
<script>
(function(){
var app = angular.module('app', []);
var createController = function ($scope) {
$scope.mydata = 'I work!';
};
app.controller('createController', createController);
}());
</script>
</body>
</html>
如果您正在使用 2 个文件
文件index.html
<!DOCTYPE html>
<html ng-app="app">
<head>
<meta charset="utf-8">
<title>My AngularJs App</title>
</head>
<body>
<!-- HTML -->
<div ng-controller="createController">
{{mydata}}
{{6+9}}
</div>
<!-- AngularJS required -->
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
<!-- AngularJS extra files -->
<script src="createController.js"></script>
</body>
</html>
文件createController.js
(在与index.html
相同的文件夹中)
(function(){
var app = angular.module('app', []);
var createController = function ($scope) {
$scope.mydata = 'I work!';
};
app.controller('createController', createController);
}());
我认为问题很可能是您包含脚本的顺序:
尝试以下操作:
<script src="~/Scripts/angular.min.js"></script>
<script src="~/appAjs/controllers/createController.js"></script>
<script src="~/appAjs/app.js"></script>
推理是 app.js
尝试使用尚未定义的函数来定义控制器,而该函数是 运行。
{{scope.data}}
应该是 {{data}}
的点是正确的,但不解释 {{6+9}}
不起作用。
我在我的 asp.net mvc 项目中包含 angular js 但是当我在控制器中调用对象时
angular js 表达式不求值
这里是app.js代码请建议
var app = angular.module('app', []);
app.controller('createController', createController);
这里是 createController 代码
var createController = function ($scope) {
$scope.mydata = 'I work!';
}
这是我在 html 中包含的内容
<html ng-app="app">
<script src="~/Scripts/angular.min.js"></script>
<script src="~/appAjs/app.js"></script>
<script src="~/appAjs/controllers/createController.js"></script>
<div ng-controller="createController">
{{scope.mydata}}
{{6+9}}
您需要在应用模块的上下文中创建控制器。
你的app.js应该只有
angular.module('app', []);
您的 createController 代码应该类似于此
angular.module('app')
.controller('createController', function ($scope) {
$scope.mydata = 'I work!';
});
您需要更改表达式
{{scope.mydata}}
至
{{mydata}}
表达式可以访问作用域,访问作用域对象不需要关键字。
根据你的代码,我只能怀疑两个件事
- 您的 javascript 范围不正确
- 不要在您的 "scope" 代码中使用
scope
一词
第一部分:javascript范围:
始终使用 IIFE,在您的情况下,您的代码应如下所示:
(function(){
var app = angular.module('app', []);
var createController = function ($scope) {
$scope.mydata = 'I work!';
};
app.controller('createController', createController);
}());
第二部分:不要使用scope
在你的 HTML 中,你不应该使用 scope
这个词,因为它已经在你的控制器中继承了,因为这是你传递给 "view"
因此,您的代码应如下所示:
<!DOCTYPE html>
<html ng-app="app">
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<div ng-controller="createController">
{{mydata}}
{{6+9}}
</div>
</body>
</html>
结果是:
I work! 15
JSBIN so you can check it out.
中的实时代码您的 HTML 页面,全部应该如下所示:
如果您只有 一个文件
<!DOCTYPE html>
<html ng-app="app">
<head>
<meta charset="utf-8">
<title>My AngularJs App</title>
</head>
<body>
<!-- HTML -->
<div ng-controller="createController">
{{mydata}}
{{6+9}}
</div>
<!-- AngularJS required -->
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
<!-- AngularJS code -->
<script>
(function(){
var app = angular.module('app', []);
var createController = function ($scope) {
$scope.mydata = 'I work!';
};
app.controller('createController', createController);
}());
</script>
</body>
</html>
如果您正在使用 2 个文件
文件index.html
<!DOCTYPE html>
<html ng-app="app">
<head>
<meta charset="utf-8">
<title>My AngularJs App</title>
</head>
<body>
<!-- HTML -->
<div ng-controller="createController">
{{mydata}}
{{6+9}}
</div>
<!-- AngularJS required -->
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
<!-- AngularJS extra files -->
<script src="createController.js"></script>
</body>
</html>
文件createController.js
(在与index.html
相同的文件夹中)
(function(){
var app = angular.module('app', []);
var createController = function ($scope) {
$scope.mydata = 'I work!';
};
app.controller('createController', createController);
}());
我认为问题很可能是您包含脚本的顺序:
尝试以下操作:
<script src="~/Scripts/angular.min.js"></script>
<script src="~/appAjs/controllers/createController.js"></script>
<script src="~/appAjs/app.js"></script>
推理是 app.js
尝试使用尚未定义的函数来定义控制器,而该函数是 运行。
{{scope.data}}
应该是 {{data}}
的点是正确的,但不解释 {{6+9}}
不起作用。