2014-01-27 3 views
0

하나의 서비스 메소드가 있습니다 items.getItems();각도 js : 컨트롤러 및 서비스

<div data-dy-item data-items="param()"       
       </div> 

그러나 : 뭔가 같이 할

$scope.param= function(){ 
items.getItems(function(data){ 
     $scope.selectedItemsUpdate = data; 
    }); 
return $scope.selectedItemsUpdate} 

내 html 페이지에서 : 내 컨트롤러에서 사용

getItems: function(callback){  
      $http({ 
       url: url, 
       method: "POST" 
      }).success(function(data, status){    

          callback(data);       
         }                 
      }).error(function(err){ 
       console.error('Error: %s error: %O', 'getLanguages[*] failed.', err); 
      }); 
     } 

, 나는 함수 내에서 호출하고 싶습니다 do30't work

+0

이것은 실제 문제는 아니지만 Javascript에서 허용하는 경우에도'function'을'function'의 이름으로 사용하는 것은 잘못된 것 (TM)이라고 생각합니다. 문서화 된 gaffe 외에도, 나는 IE9 이하의 의지로 날아갈 것이라고 생각하지 않습니다. –

+0

"data-dy-item"및 "data-items"란 무엇입니까? 각도 지시어입니까? – ProxyTech

+0

지시어입니다 – user880386

답변

0

호출이 비동기입니다. 서비스 메소드가 리턴 될 때, 콜백은 아직 호출되지 않았다. 따라서 컨트롤러 함수는 항상 undefined (또는 selectedItemsUpdate의 이전 값)를 반환합니다. AJAX 응답은 콜백 호출을 위해 다시 돌아와야합니다. 그래서 코드가 있어야한다 :

$scope.param = function(){ 
items.getItems(function(data) { 
    $scope.selectedItemsUpdate = data; 
    }); 
} 

그리고 HTML이

<div data-dy-item data-items="selectedItemsUpdate"></div> 
물론

의 PARAMS해야한다() 함수는 약간의 시간에 호출해야합니다. 컨트롤러가 인스턴스화되거나 일부 버튼을 클릭 할 때 호출해야합니다.

+1

나는 이것이 단지 추측 일이라고 생각한다. 원래의 문제는 분명하지 않다. 그래도 네가 옳았기를 바래. – meilke

관련 문제