Почему не угловая отрисовки?

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>'
Теги:
angularjs-scope

1 ответ

0

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

  • который отображает список предметов
  • один, который не отображает ничего

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню