3
AngularJS Classic:Im更改我的模型ng-click
視圖沒有更新。我認爲簡單的$scope.$apply()
會更新,但我沒有得到它的工作。我想我不是在正確的地方設置$apply()
或類似的東西。AngularJS - 模型更改沒有更新視圖
實施例:Plunker
對象的名稱上按鍵來改變。
AngularJS Classic:Im更改我的模型ng-click
視圖沒有更新。我認爲簡單的$scope.$apply()
會更新,但我沒有得到它的工作。我想我不是在正確的地方設置$apply()
或類似的東西。AngularJS - 模型更改沒有更新視圖
實施例: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);
我很抱歉,我的榜樣並不完全代表我的問題。我現在更新了它。謝謝您的回答。 [Plunker](http://plnkr.co/edit/8rREFdLKvznaNLlaj6Hm) – strangfeld
@strangfeld好吧,看看我的更新 – Cherniv
哪種方法更高性能/更便宜? – strangfeld