2014-02-20 2 views
1

Говоря просто, угловые службы всегда путают меня, и я, кажется, заставляю их работать с проб и ошибок. Я хотел бы знать, почему в этом случае данные возвращаются undefined.простой угловой беспорядок обслуживания

App модуль:

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

Услуги:

//creating a service module 
var appServices = angular.module('services', []); 

appServices.factory('Data', function(){ 
return {message : "I am data"} 
}); 

Контроллер:

app.controller('firstCtrl',['Data', 
function($scope, Data){ 
    //get data from the service 
    $scope.data = Data; 
    console.log(Data); 

}]); 

app.controller('secondCtrl',['Data', 
function($scope, Data){ 
    //get data from the service 
    $scope.data = Data; 

}]); 

Если я утешаю данные журнала я просто получить "неопределенными". Я просто пытаюсь сделать простой пример для возврата объекта {message: "i am data"} , так что

$ scope.data = Данные;

затем в представлении

data.message = «я данные»

бы реально оценить объяснение того, почему это не работает. Спасибо

ответ

3

Вы не впрыскиваете $scope в контроллер. Измените его следующим образом:

app.controller('firstCtrl', [ 
    '$scope', // There should be an element of this array for each parameter 
    'Data', 
    function($scope, Data){ 
     //get data from the service 
     $scope.data = Data; 
     console.log(Data); 
    } 
]); 

Как вы только инъекции Data услугу он получает сопоставляется с параметром функции контроллера $scope, и ничто не отображается в параметре Data (а с переменной, которая не была присвоенное значение неявно имеет значение undefined, вы видите undefined).

+0

спасибо, глупый: D –

0

вы можете использовать выше ответ, но вы можете использовать

app.controller('firstCtrl', function($scope, Data){ 

    //get data from the service 
    $scope.data = Data; 
    console.log(Data); 
}); 

это не будет работать нормально нет необходимости для передачи широкого спектра услуг и функции контроллера в качестве второго аргумента только функции будет работать нормально.

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