2014-01-27 2 views
0

У меня есть один метод метода items.getItems();угловой js: контроллер и обслуживание

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); 
      }); 
     } 

Я использую его в мой контроллер, я хотел бы назвать его внутри функции:

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

и в моем HTML-страницы, чтобы сделать, как-то:

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

Но это doens't work

+0

Это не может быть актуальной проблемой, но я считаю, что использование 'function' в качестве имени' function', даже если оно разрешено Javascript, является Bad Thing (TM). Помимо документального оплошности, я не думаю, что он полетит с IE9 и ниже. –

+0

Что такое "data-dy-item" и "data-items"? Являются ли они угловыми директивами? – ProxyTech

+0

Это директива – user880386

ответ

0

Звонок асинхронный. Когда метод службы возвращается, обратный вызов еще не вызывается. Таким образом, функция контроллера всегда будет возвращать неопределенные (или предыдущее значение selectedItemsUpdate). Ответ AJAX должен возвращаться для вызова callback. Таким образом, код должен быть:

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

И HTML должен быть

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

Разумеется, PARAMS() функция должна быть вызвана в какой-то момент. Вероятно, это должно быть вызвано при создании экземпляра контроллера или при нажатии какой-либо кнопки.

+1

Я думаю, что это всего лишь догадка: оригинальная проблема не очень ясна. Надеюсь, вы правы. – meilke

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