javascript - 单独定义服务和工厂时,Angular 不起作用

标签 javascript c# angularjs asp.net-mvc

我正在尝试编写一个简单的 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/

相关文章:

c# - 从属性 getter 或 setter 方法创建委托(delegate)

javascript - 如何获取嵌套 ng-repeat 的父 $index

javascript - Angular ui-router嵌套 View 分离模板和 Controller

javascript - 在 Iframe 中获取一个元素并使用 java 脚本为其分配一个值

c# - MVVM light - 导航服务android

javascript - 如何在 Javascript 中检查文件是否可以预览(图像、视频、音频或文本文件)?

javascript - 序列化或反序列化期间出错。 JSON JavaScript序列化器

javascript - javascript中具有公共(public)回调的类

javascript - 截取 "invisible"网页的屏幕截图

javascript - Jquery ajax 给我一个 404 not found 错误