【发布时间】:2014-06-11 05:18:44
【问题描述】:
在学习了 JavaScript 和 jQuery 之后,我决定学习 Angular.js,但我发现这有点困难。这是我的代码。
index.html:
<html>
<head>
<title>Resolute</title>
<script src="js/angular 1.3.0-beta9/angular.js" type="text/javascript"></script>
<script src="js/index.js" type="text/javascript"></script>
</head>
<body ng-app="resoluteApp">
<form novalidation ng-controller="resoluteCtrl" ng-submit="submit()">
<button type="submit">Submit</button>
</form>
</body>
</html>
index.js:
var app = angular.module('resoluteApp', []);
app.service('resoluteService', function myService() {
this.bar = function() { return 'resolute'; };
});
app.controller('resoluteCtrl', function($scope) {
$scope.submit = function() {
alert(resoluteService.bar()); // resoluteService is undefined here
};
});
我希望能够从ng-submit 事件处理程序$scope.submit() 中调用服务resoluteService 中定义的函数bar()。按提交按钮后,我在控制台中收到以下错误(Chrome 35.0.1916.153):
ReferenceError: resoluteService is not defined
at Scope.$scope.submit (http://localhost:8383/resolute/js/index.js:9:19)
at http://localhost:8383/resolute/js/angular%201.3.0-beta9/angular.js:10797:21
at http://localhost:8383/resolute/js/angular%201.3.0-beta9/angular.js:19791:17
at Scope.$eval (http://localhost:8383/resolute/js/angular%201.3.0-beta9/angular.js:12699:28)
at Scope.$apply (http://localhost:8383/resolute/js/angular%201.3.0-beta9/angular.js:12797:23)
at HTMLFormElement.<anonymous> (http://localhost:8383/resolute/js/angular%201.3.0-beta9/angular.js:19790:21)
at http://localhost:8383/resolute/js/angular%201.3.0-beta9/angular.js:2860:10
at forEach (http://localhost:8383/resolute/js/angular%201.3.0-beta9/angular.js:327:20)
at HTMLFormElement.eventHandler (http://localhost:8383/resolute/js/angular%201.3.0-beta9/angular.js:2859:5)
由于我仍在努力理解 Angular 的做事方式,我不确定如何将 resoluteService 或其中的函数 bar 引导到 $scope.submit 的范围内。可能是我以完全错误的方式思考它,或者它可能只是我缺少的一些简单的东西。关于如何解决这个问题的任何想法?
【问题讨论】:
标签: javascript angularjs angular-services