2014-01-23 5 views
3

AngularJS Classic: Im меняет мою модель на ng-click вид не обновляется. Я подумал, что просто обновится $scope.$apply(), но я не получу его работу. Я полагаю, что я не устанавливаю $apply() в нужное место или что-то в этом роде.AngularJS - изменения модели не обновляются вид

Пример:Plunker

Название объекта изменяется на Нажмите кнопку.

ответ

3

Просто обновите 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

+0

Я сожалею, что мой пример точно не представляла проблему, которую я имею. Я обновил его сейчас. Спасибо за ваш ответ. [Plunker] (http://plnkr.co/edit/8rREFdLKvznaNLlaj6Hm) – strangfeld

+0

@strangfeld ok, посмотрите мое обновление – Cherniv

+0

, какой подход более результативен/дешевле? – strangfeld

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