J'ai besoin d'aide pour comprendre le concept de "regarder" les changements d'un objet et de le mettre à jour dans la vue.L'objet initialisé via la résolution n'est pas "surveillé"?
Dans mon cas particulier, l'objet est initialisé via la résolution de la vue puis affecté au paramètre scope avec le contrôleur.
Mon attente est que en quelque sorte si je mets à jour l'objet original à nouveau, puis il devrait changer la valeur imprimée dans la vue
var myApp = angular.module('myApp', ['ngRoute']);
myApp.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/', {
template: 'hello {{ user.name }}',
controller: 'userController',
resolve: {
user: function() {
return {name: 'john'}
}
}
}).
otherwise({
redirectTo: '/'
});
}]);
myApp.controller('userController', function($scope, user) {
$scope.user = user;
// I thought the object is supposed to be watched by reference but it is not
user = {name: 'doe'}
});
plunker: http://plnkr.co/edit/w7woYVYB6GwCiJpWGWB4?p=preview
S'il vous plaît me dire ce que je fais mal et comment fixer
Modifier pour plus de précisions:
il est de ma faute d'ignorer la raison derrière tout cela . Ma résolution ressemble vraiment à ceci:
resolve: {
user: function() {
return userService.get();
}
}
Comme vous pouvez le voir, je retourne un objet pour résoudre (ce qui est une propriété définie à l'intérieur du UserService). Maintenant, mon espoir est que si je peux simplement appeler userService.update(); Dans mon contrôleur alors en quelque sorte le $ scope.user pointant toujours vers le même objet se mettra à jour automatiquement. Je suppose que non ....
userService.update();
J'ai mis à jour ma réponse pour vous montrer comment implémenter la fonctionnalité $ watch. – zszep