2014-06-02 5 views
0

Я работаю над угловым социальным приложением, где у меня есть несколько вопросов, связанных с привязкой к сфере. У меня есть данные области, поступающие из службы http, в которой указан абонентский абонент. Всякий раз, когда в поиске пользователь ищет любого пользователя и хочет его добавить, то в это время я делаю http-вызов и возвращаю обновленные данные списка подписчиков. Но обновление не обновляется без обновления страницы. Я могу использовать для этого интервал, но я не думаю, что это будет решение, потому что оно добавит больше нагрузки на мой сервер, сделав регулярные HTTP-запросы.Обновить Просмотреть при изменении области Угловая js

JS

this.loadsubscribers = function(){ 
myService.subscriber().then(function(response){ 
    $scope.subscriber = response.data;   
    }); 
} 

// i can make interval call for getting subscriber list but this will put load to my server. 

$interval(function(){ 
    this.loadsubscribers(); 
}.bind(this), 10000); 

this.loadsubscribers(); 

мне нужно обновить эту область, когда пользователь нажимает на кнопку Добавить подписчик: Здесь, когда пользователь нажимает на надстройке функции абонент CHECKIT дозвонились и добавить этого пользователя в список подписчиков, делая HTTP вызов. aftre save data i возвращает текущий список подписчиков на успех http. Но он не обновляет представление.

$scope.checkit = function(value,id,firstname,str){  

    if(text === 'get along'){ 
    $http.post(baseurl+"ajax/subscriber_post", "subscriber_id="+value).success(function(data){ 
     //here i have to update scope subscriber and 
     // refresh view as you can see i am doing it but it doesn't update view. 
     $scope.subscriber =data; 
     growl.addSuccessMessage(firstname+" is your fellow now");  
     $scope.datatocheck.push(value); 
     $scope.Checkfriend(value); 
    }); 
} 

Интервал работает, но я не хочу его использовать. Хорошо, что было бы лучшим способом сделать это, когда данные не хотят синхронного обновления.

ответ

0

Изменить эту строку:

$scope.subscriber =data; 

Для этого:

$scope.$apply(function() { 
    $scope.subscriber =data; 
}); 
+0

Я пробовал, но он не работает, говорит, что цикл дайджеста работает –

0

Попробуйте это:

$scope.$eval(function() { 
    $scope.subscriber = data; 
}); 

Если вы по-прежнему сталкиваются с переваривать проблемы петли, попробуйте $evalAsync вместо $eval.

+0

Я не знаю, где я иду не так, но он не работает !. –

+1

Вы можете создать jsfiddle/plunkr, который воспроизводит эту проблему? – yarons

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

  • Нет связанных вопросов^_^