2016-04-11 2 views
2

все. Я новичок в AngularJS и считаю это очень интересным, но я немного не понимаю, о следующей ситуации.

angular.module("myApp", []).controller("myCtrl", function ($scope) { 
$('#light-pagination').pagination({ 
    items: count, 
    itemsOnPage: 10, 
    cssStyle: 'light-theme', 
    onPageClick: function (pageNumber) { 
     ajaxHelper(AccountingObjectUri + '?$skip=' + (pageNumber * 10 - 10) + "&$top=10", 'GET').done(function (data) { 
      // console.log(data); 
      $scope.AccountingObject = data; //not working 
     }); 
    } 
}); 

}

я не могу присвоить $ scope.AccountingObject = данные, есть в любом случае я могу назначить возвращаемые данные в $ объеме?

+0

Я не угловатый гуру, но я думаю, что угловой не знает, что вы меняете значение $ scope.AccountingObject'. Вы должны обновить DOM внутри директивы, а не контроллера. Вызов '$ scope. $ Apply()' должен работать, но im 'вполне уверен, что на самом деле это не так. –

+0

Выполняется ли 'console.log (data);' произойдет? Если да, то причина, по которой вы не видите данные в своем представлении, заключается в том, что вы обходите угловую часть вашего приложения. –

ответ

3

onPageClick происходит за пределами обычного углового срока службы. Вы должны позвонить $scope.$apply() после назначения данных, чтобы указать угловое значение для обновления вида.

.done(function(data) { 
    $scope.$apply(function() { 
    $scope.AccountingObject = data; 
    }); 
}); 

В угловом общем правиле нет прямого манипулирования DOM, внутри контроллера, предпочтительный способ заключается в использовании директивы с функцией связи, которая изменяет DOM (т.е. вызывающего pagination()).

+1

Более того, угловые директивы дают вам крючок в DOM, который они представляют с объектом 'elem/element' в функции ссылки. Это будет либо полный объект jQuery, либо объект jQLite. – ste2425

0

Использование $scope.$evalAsync.

   $scope.$evalAsync(function() {      

        $scope.AccountingObject = data; 

       }); 

В идеале вы должны обновить DOM внутри директивы, а не в контроллере.

+0

Я попробовал. но не работает. $ scope.AccountingObject необходимо назначить внутренний контроллер. В любом случае я могу назначить возвращаемые данные с помощью директивы. – john