2015-07-20 42 views
0

我試圖在刪除記錄時顯示Flash消息。我無法獲得通知顯示,儘管如果在從服務器獲得響應後使用console.log,我會得到正確的響應。AngularJS:通過模塊化窗口傳遞數據

查看:

<p ng-show="offerDeletedSuccess" class="someClass"> 
    Some notice 
</p> 

通用控制器:

$scope.offerDeletedSuccess = false; 

$scope.open = function(offer) { 
    var modalInstance = $modal.open({ 
     animation: true, 
     templateUrl: 'myModalContent.html', 
     controller: 'ModalInstanceCtrl', 
     resolve: { 
      offerDeletedSuccess: function() { 
       return $scope.offerDeletedSuccess; 
      } 
     } 
    }); 

    modalInstance.result.then(function (selectedItem) { 
     $scope.selected = selectedItem; 
    }); 
}; 

模態實例控制器:

angular 
    .module('someModule') 
    .controller('ModalInstanceCtrl', function ($http, $scope, $modalInstance, offerDeletedSuccess) { 

    $scope.ok = function() { 
     console.log(offerDeletedSuccess); // this returns false 

     $http.post('/api/offers/delete/' + offer.id). 
     success(function(data) { 
      offerDeletedSuccess = true; 
      console.log(offerDeletedSuccess); // this returns true, expression in html stays false 
     }). 
     error(function() { 
      console.log('API error - config.') 
     }); 

     $modalInstance.close(); 
    }; 

    $scope.cancel = function() { 
     $modalInstance.dismiss('cancel'); 
    }; 
}); 
+0

'不知怎的,這不是working':它怎麼不工作?你期望什麼以及它的實際行爲是什麼? – Joy

+0

注意不顯示。 –

+0

帶modalInstance的控制器應該在模塊控制器內 –

回答

1

這個快速解決方案是使用$broadcast。您必須將$rootScope注入ModalInstanceCtrl。當數據準備好,ModalInstanceCtrl將播出名爲dataGet事件:

controller('ModalInstanceCtrl', function ($http, $scope, $modalInstance, $rootScope, offerDeletedSuccess) { 
    $http.post('/api/offers/delete/' + offer.id). 
    success(function(data) { 
     offerDeletedSuccess = true; 
     $rootScope.$broadcast('dataGet', offerDeletedSuccess); 
    }). 
} 

我們可以處理一般的控制器事件:

$scope.$on('dataGet', function(value){ 
    //The value here is offerDeletedSuccess in ModalInstanceCtrl 
     $scope.offerDeletedSuccess = value; 
}); 
+0

廣播就像某種觀察者?這是完全正常工作,謝謝。 –

+1

啊,我現在看到它。 $ on是一個監聽器/觀察者,$ broadcast發送數據。 –