-1

Я этот код JSсервис не работает в простом контроллере

var app = angular.module('app', []); 


app.service('testService', function(){ 
    this.sayHello= function(text){ 
    return "Service says \"Hello " + text + "\""; 
    }; 
    this.sayGoodbye = function(text){ 
    return "Service says \"Goodbye " + text + "\""; 
    }; 
}); 


app.controller('AboutCtrl', ['testService', function ($scope, $location, $http) { 


    $scope.fromService = testService.sayHello("World"); 
    $scope.toService = testService.sayGoodbye("World"); 
}]); 

и в моем HTML У меня есть эта .... ... привет {{}} fromService .... ... В консоли нет ошибок, и страница просто пустая.

+0

Вы разместили объявление «ng-app» в любом месте вашего HTML? – Makoto

+0

добавить 'testService' как зависимость в' app.controller ('AboutCtrl', ['testService', function ($ scope, $ location, $ http) {'line. –

ответ

5

Пожалуйста, взгляните на AngularJs Docs «Использование инъекции зависимостей».

Правильный путь:

app.controller('AboutCtrl', ['$scope', '$location', '$http', 
'testService', function ($scope, $location, $http, testService) { 
     $scope.fromService = testService.sayHello("World"); 
     $scope.toService = testService.sayGoodbye("World"); 
}]); 
1

Вы не инъекционные вашей службы должным образом.

app.controller('AboutCtrl', ['$scope', '$location', '$http', 
'testService', function ($scope, $location, $http, testService) { 

     $scope.fromService = testService.sayHello("World"); 

     $scope.toService = testService.sayGoodbye("World"); 

}]); 

Также в вашем HTML вы должны добавить ng-app="app" и ng-controller в especify контроллера.

<!DOCTYPE html> 
<html ng-app="app"> 
    <head></head> 
    <body ng-controller="AboutCtrl"> 
     <p>Hi {{fromService}}</p> 

    <!-- Also place here your JS files.-->> 
    </body> 
</html> 
1

вечеря легко, На самом деле вы инъекционное обслуживание не место проверить это:

app.controller('aboutCtrl', function ($scope, $location, $http, testService) { 
$scope.fromService = testService.sayHello("World"); 
$scope.toService = testService.sayGoodbye("World"); 
}); 
2

Вы можете вводить свой сервис в контроллер с помощью этих способов.

Инлайн Массив Аннотация

app.controller('MyController', ['$scope', 'testService', function($scope, testService) { 
    // ...Code here 
}]); 

$ впрыснуть собственности Аннотация

var MyController = function($scope, testService) { 
    // ... 
} 
MyController.$inject = ['$scope', 'testService']; 
app.controller('MyController', MyController); 

неявной Аннотация

app.controller('MyController', function($scope, testService) { 
    // ... 
}); 

, если вы хотите узнать, какой из них предпочтительнее, тогда прочитайте это Dependency Injection

Смежные вопросы