4

Ich habe versucht, Wert von einem Modul an ein anderes Modul in angularjs übergeben. mit .value, die gut funktioniert.Wie update .value in Controller angularjs?

Arbeits: -

var app = angular.module('app', []); 
app.value('movieTitle', 'The Matrix'); 
var app1 =angular.module('app1', ['app']); 
app1.controller('MyController', function (movieTitle) { 
//Here I am getting value. which is working fine. 
console.log(movieTitle) 
}) 

Problem: -

var app = angular.module('app', []); 
app.value('movieTitle', 'The Matrix'); 
app.controller('MyController', function (movieTitle) { 
//Here I override the value. 
movieTitle = "The Matrix Reloaded"; 
}) 
var app1 =angular.module('app1', ['app']); 
app1.controller('MyController', function (movieTitle) { 
//Here I am getting old value not update value. 
console.log(movieTitle) 
}) 

In der zweiten Probe habe ich versucht, den Wert seiner Aktualisierung in Ordnung zu aktualisieren. aber während ich auf den Wert von anderen Modulen zugreife, zeigt es nur alte Werte an, nicht aktualisiert man kann mir dabei helfen. wo ich Fehler gemacht habe ...

+0

haben Sie eine Chance, die Antworten zu sehen? –

Antwort

1

JavaScript-Strings sind unveränderlich, so dass Sie den injizierten Wert nicht aktualisieren können (da es eine Zeichenfolge ist) - Sie ändern nur den Inhalt der injizierten Variable. Sie könnten einen anderen Ansatz nehmen die Zeichenfolge innerhalb eines Objekts zu enthalten, jetzt können Sie die Zeichenfolge in das Objekt aktualisieren:

var movie = { title: 'The Matrix' }; 

angular.module('app', []) 
    .value('movie', movie) 
    .controller('MyController', function (movie) { 
     //Here I override the value. 
     movie.title = "The Matrix Reloaded"; 
    }); 

angular.module('app1', ['app']) 
    .controller('MyController', function (movie) { 
     console.log(movie.title); 
    }); 
0

Der Wert ist im Grunde ein string, das seine ist ein primitive Typ und haben keinen Bezug so Der Wert wird einmal gebunden.

Ich habe eine fiddle mit einer Fabrik hergestellt und verwendet es für Inter-Modul Anwendung als Ihre Anforderung

var app = angular.module('myApp', []); 
var app1 = angular.module('myApp1', ['myApp']); 

app.controller('HelloCtrl', HelloCtrl); 
app.controller('GoodbyeCtrl', GoodbyeCtrl); 
app1.controller('ctrl2', ctrl2); 
app.factory('testFactory', function(){ 
     var _name = 'hello'; 
    return { 
     getName: function(text){ 
      return _name; 
     }, 
     setName: function(name){ 
      _name = name; 
     } 
    }    
}); 

function HelloCtrl($scope, testFactory){ 
    $scope.name = testFactory.getName(); 
    testFactory.setName('hello2'); 
} 

function GoodbyeCtrl($scope, testFactory){ 
    $scope.name = testFactory.getName(); 
    testFactory.setName('hello3'); 
} 

function ctrl2($scope, testFactory){ 
    $scope.name = testFactory.getName(); 
} 

Hoffe, es hilft.