2016-01-11 4 views
0

Когда я вызываю $ scope.remove в html, он вызывает функцию rerender, а затем автоматически обновляет данные в html.Почему угловая не реиндеринг?

Когда я вызываю $ scope.post, он вызывает функцию rerender и записывает новые данные. Однако он не автоматически перезагружает html. Мне нужно обновить страницу, чтобы просмотреть обновленные данные.

Я искал использование $ apply, но я озадачен тем, как это обновление для удаления, но не сообщение.

Контроллер:

var updateData = function (resp){ 
    $scope.data = resp.data; 
    console.log($scope.data); 
} 

$scope.getEntries = function(){ 
    return $http({ 
    method: 'GET', 
    url: '/allEntries' 
    }).then(updateData) 
}; 

$scope.post = function(){ 
    return $http({ 
    method: 'POST', 
    url: '/newEntry', 
    data: $scope.entry 
    }).then(function (resp){ 
    $scope.getEntries(); 
    }) 
}; 

$scope.remove = function (opp){ 
    return $http({ 
    method: 'POST', 
    url: '/deleteEntry', 
    data: opp 
    }).then(function(){ 
    $scope.getEntries(); 
    }) 
} 

Я думаю, это может быть что-то делать с наличием функций, называемых в различных HTML-файлов, но так как они оба имеют один и тот же контроллер, я думаю, что бы это не было бы случай.

<html> 
    <body ng-app = "app"> 
    <div ng-controller = "controller"> 
    <form ng-submit = "post()"> 
     <input type="submit" value="Submit"> 
    </form> 
    </div> 
    </body> 
</html>` 

<html> 
    <body ng-app = "app"> 
    <div ng-controller = "controller"> 
    <ul> 
     <li ng-repeat = "job in data" ><input type = "button" ng-click = "remove(opp)" value="Delete"></li> 
    </ul> 
    </div> 
    </body> 
</html>` 

ответ

0

В самом деле, у вас есть два различных разделов, каждый со своим собственным контроллером, и, следовательно, каждый со своей собственной области:

  • один, который отображает список элементов
  • один, который diesn't показать что-нибудь

Вы публикуете из раздела, который ничего не отображает, поэтому он обновляет список в области этого раздела, который все еще ничего не отображает.

Итак, вкратце, обе секции не имеют одного и того же контроллера. У них разные экземпляры контроллеров, и эти экземпляры имеют одинаковый тип. Но они все еще полностью независимы друг от друга.

И на самом деле, перечитывая свой вопрос, на самом деле это хуже. Кажется, у вас есть две вкладки браузера или фреймы. Вы отправляете сообщения с одной из вкладок и надеетесь, что другая будет обновляться автоматически. Этого не произойдет: две вкладки являются полностью независимыми приложениями.

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