簡體   English   中英

分別定義服務和工廠時,Angular不起作用

[英]Angular doesn't work when defining a service and factory separately

我正在嘗試編寫一個簡單的角度服務和如下所示的工廠:

的HTML:

<div ng-controller="mycontroller">
    {{saycheese}}
</div>

Java腳本

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}}而不是對該函數進行角度映射。

鏈接到我的小提琴: http : //jsfiddle.net/PxdSP/3047/

您能指出我在這種情況下哪里出問題了嗎? 謝謝。

您的代碼中有幾個語法錯誤,檢查控制台將毫無疑問地對SO有所幫助。 這是編寫控制器( demo )的一種可能方法:

myApp.controller("mycontroller", ["$scope", "myfactory", "myservice", 
   function($scope, myfactory, myservice) {
     $scope.saycheese = [
        myfactory.sayHello(),
        myservice.sayHello()
     ];
}]);

除了明顯的修復myapp => myApp (變量名稱在JavaScript中區分大小寫)之外,還應將$scope作為參數傳遞給控制器​​(並像使用控制器那樣使用數組化-正確的-形式作為其依賴關系提及)您才能訪問它。 否則,您將得到ReferenceError: $scope is not defined調用控制器代碼時, ReferenceError: $scope is not defined異常。

幾件事情:

  1. myapp.controller(...)應該是myApp.controller(...)
  2. 您需要在控制器中注入$scope

固定控制器:

myApp.controller("mycontroller", ["myfactory", "myservice", "$scope", function(myfactory, myservice, $scope) {
    $scope.saycheese = [
        myfactory.sayHello(),
        myservice.sayHello()
    ];
}]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM