我正在尝试编写一个简单的 Angular 服务和工厂,如下所示:
html:
<div ng-controller="mycontroller">
{{saycheese}}
</div>
Javascript
var myApp = angular.module('myApp', []);
myApp.service('myservice', function() {
this.sayHello = function() {
return "from service";
};
});
myApp.factory('myfactory', function() {
return {
sayHello: function() {
return "from factory!"
}
};
});
//defining a controller over here
myapp.controller("mycontroller", ["myfactory", "myservice", function(myfactory, myservice) {
$scope.saycheese = [
myfactory.sayHello(),
myservice.sayHello()
];
}]);
但是 JSFiddle
仍然只显示 {{saycheese}}
而不是函数的 Angular 映射。
链接到我的 fiddle : http://jsfiddle.net/PxdSP/3047/
你能指出我在这种情况下哪里出错了吗?谢谢。
最佳答案
您的代码中有几个语法错误,检查控制台会有所帮助,而无需质疑 SO。这是编写 Controller 的一种可能方法 ( demo ):
myApp.controller("mycontroller", ["$scope", "myfactory", "myservice",
function($scope, myfactory, myservice) {
$scope.saycheese = [
myfactory.sayHello(),
myservice.sayHello()
];
}]);
除了明显的修复 myapp => myApp
(变量名称在 JavaScript 中区分大小写)之外,$scope
应该作为参数传递到 Controller 中(并提到为如果使用数组的正确形式的 Controller 定义(就像您所做的那样),那么您可以访问它之前的依赖项。否则,当调用 Controller 代码时,您只会收到 ReferenceError: $scope is not Defined
异常。
关于javascript - 单独定义服务和工厂时,Angular 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42631704/