2014-03-25 3 views
0

Angularjs World의 초보자입니다. 내가 angljs Factory.Controller 및 공장에 다른 js 파일에 정의 된 각도 컨트롤러에서 일부 데이터를 가져오고 싶습니다. 공장에서angularjs에서 컨트롤러에서 Factory로 데이터를 가져 오는 방법

코드 (파일명 Application.js)

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

app.factory('autoCompleteDataService', [function(MyController) { 
    return { 
     getSource: function() { 
     return MyController.getFirstName(); 

     } 
    } 

}]);

app.directive('autoComplete', function(autoCompleteDataService) { 
    return { 
     restrict: 'A', 
     link: function(scope, elem, attr, ctrl) { 
     $(elem).autocompleteArray(autoCompleteDataService.getSource(), { 
     minLength: 2 
     }); 
    } 

    }}) 

컨트롤러 코드

function MyController($scope){ 
    this.getFirstName= function() 
    { 
     var arrayFName=[]; 
     for(var k=0;k< $scope.MyData.length;k++) 
      { 
      arrayFName.push($scope.MyData[k].fname); 
      } 
    return arrayFName; 
    } 

의 MyData 내가이 코드는 오류 '오류를 가지고 실행하는 경우'에 fname '

일부 하드 코드 값을 포함하는 배열입니다 (이름 Controller.js 파일) : MyController에를 정의되지 않았습니다 '. 그렇다면 컨트롤러에서 데이터를 불러올 수 있습니까?

+1

, 당신은 컨트롤러에 서비스에서 데이터를 가져 오려는 : 같은

var app=angular.module('myApp',[]) app.factory('autoCompleteDataService', [function() { var _source; return { getSource: function() { return _source; }, setSource: function (source) { _source = source; } } }]); 

그리고 이후의 컨트롤러가 될 수 있습니다. 또한 각도 모듈에 컨트롤러를 정의해야합니다 :'appController ('myController', [ '$ scope', function ($ scope) {...}])' –

답변

1

출하시 소스가 정의되어 있거나 firstName이어야하며 컨트롤러에서 설정해야합니다. 그런 다음 공장을 사용하는 다른 컨트롤러에서 액세스 할 수 있습니다.

당신은 컨트롤러에서 데이터를 가져올하지 않으
app.controller('someController', ['$scope', 'autoCompleteDataService', 
    function ($scope, autoCompleteDataService) { 
     $scope.source = autoCompleteDataService.getSource(); 

     // or even... 
     // $scope.getFirstName = autoCompleteDataService.getSource; 
    }]); 
+0

당신은 정교 할 수 있습니까? – sar

+0

설정 방법에 따라 서비스에서'getSource'를 호출하려고합니다. 그러면 getSource가 컨트롤러에서'getFirstName'을 호출합니다. 그 컨트롤러에서해야 할 일은'setSource()'(또는 더 이해하기 쉬운'setFirstName')입니다. 이제 모든 후속 요청은 컨트롤러 ('MyController.getFirstName()')를 호출하지 않고 서비스 ('autoCompleteDataService.getSource()')를 호출합니다. – Tom

+0

저를 위해 작동하지 않습니다 – sar

관련 문제