簡體   English   中英

AngularJS - 模型更改不更新視圖

[英]AngularJS - model changes not updating the view

AngularJS Classic:我在ng-click上改變我的模型,視圖沒有更新。 我認為只是$scope.$apply()會更新,但我沒有讓它工作。 我想我沒有在適當的地方設置$apply()或類似的東西。

示例: Plunker

按下按鈕可更改對象的名稱。

只需在點擊后再次更新您的explorerObject ,因為它仍然指向您之前的對象:

 $scope.click = function () {
    ExplorerService.setExplorerObject({
      selected : {
        name: 'Defined Now !',
        id: 'id',
        timestamp: 'timestamp'
      },
      templateURL: 'views/beispiel.html'
    });
     $scope.explorerObject = ExplorerService.getExplorerObject(); // <--- here
  }

工作: http//plnkr.co/edit/UWE7o3mtAzY3xzYRWfkf?p =preview

問題后'編輯:

您可以在第二個控制器中使用$watch

app.controller('SecondCtrl', function($scope, ExplorerService) {

  $scope.$watch(function(){
      return ExplorerService.getExplorerObject();
  },function(n,o){
      $scope.explorerObject = ExplorerService.getExplorerObject(); 
  },true)

});

工作: http//plnkr.co/edit/8mZO5kZmTrqwHKnxtBSd?p=preview

或者使用$broadcast方法,例如:

app.controller('SecondCtrl', function($scope, ExplorerService) {

  $scope.explorerObject = ExplorerService.getExplorerObject(); 

  $scope.$on("EXPLORER_OBJECT_CHANGED" ,function(event,obj){ 
      $scope.explorerObject = obj;
  });    

});

並在您的服務中添加: $rootScope.$broadcast("EXPLORER_OBJECT_CHANGED", explorerObject);

示例: http//plnkr.co/edit/9WKypJTb0wViQZ01m9TN?p = preview

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM