2013-09-06 4 views
1

новое на этом.

У меня есть 2 div's; Когда я использую одно для размещения нового значения на сервере, пост-действие работает нормально.

Как обеспечить, чтобы этот пост обновлял область действия в другом div? (для обновления div новой записью с использованием ng-repeat)

Действие HTTP.post, похоже, работает, когда данные появляются при обновлении.

Я пробовал $ scope.apply(), но он, похоже, не работает.

// this is the controller to get the data from the server 
    app.controller('projectsController', 
     function projectsController($scope, projectsFactory){ 
       $scope.projects = projectsFactory.query(); 
     }); 

и завод, чтобы получить данные с сервера

app.factory('projectsFactory', 
     function($resource,localStorage, $rootScope, $http){ 
     return $resource('/api/project:id', {id: '@id'}); 
     }); 

Это контроллер принимать пользовательский ввод и отправить обратно на сервер

 app.controller('projectEditController', function($scope, projectEdit){ 
       $scope.projectEdit = projectEdit; 
    }); 

И служения разместить данные на сервере

  app.service('projectEdit', 
        function projectEdit(localStorage,$rootScope, $http) { 

     var self = this; 

     self.add = function(newProject,projects) { 
      newProject = angular.copy(newProject); 

       var newProject = (JSON.stringify(newProject)); 

     return $http.post('/api/project', newProject) 
        .then(function(response) { 
        newProject.id = response.data.id; 

    }); 

}; 

Кажется, все в порядке, когда он отправляет данные в штрафную «Север».

Что я пытаюсь выяснить, как получить «$ scope.projects = projectsFactory.query();» для обновления после завершения операции публикации.

это обновит отображение в HTML, что является целью.

Надеюсь, это простой вариант для хорошего разработчика, но я в тупике! Спасибо за ваше время.

Конор

+0

Вы можете '$ трансляции 'событие и приложить к нему результаты. Затем в вашем контроллере вы слушаете ('$ on') для события и действуете соответствующим образом. –

+0

См. Ответ ниже, – conr404

ответ

0

Создать 1-оболочку DIV, и установить контроллер к нему с нг-контроллера. Поместите свои 2 divs в обертку div. Теперь область, созданная вашим контроллером, доступна в обоих div, это простой способ. Когда что-то обновляет данные в этой области, и у вас есть другие вещи в dom, ссылающиеся на эту переменную, тогда dom будет обновляться, как вы хотите. Если вам действительно нужны разные контроллеры для каждого дочернего div, это нормально, просто будьте осторожны с унаследованными областями. На самом деле намного проще иметь одного контроллера в подобной ситуации. Кстати, я видел, что вы упомянули scope.apply(). Будьте осторожны, apply() - настоящая функция javascript, а НЕ тот, который вы хотите. $ Apply(), $ apply - это угловая функция, и чтобы избежать путаницы, вы могли бы называть область. $ Digest вместо этого.

+0

Спасибо, миллион, мой код не был хорошо отступом, поэтому перезаписал его. – conr404

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