如何在控制器angularjs内更新.value?

Sur*_*h B 5 javascript angularjs angularjs-directive angularjs-scope

我试图将值从一个模块传递到angularjs中的另一个模块.使用.value工作正常.

工作: -

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)
})
Run Code Online (Sandbox Code Playgroud)

不工作: -

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)
})
Run Code Online (Sandbox Code Playgroud)

在第二个示例中,我尝试更新其更新的值.但是当Am访问其他模块的值时,它只显示旧值未更新,任何人都可以帮助我.哪里我错了...

Mat*_*igh 1

JavaScript 字符串是不可变的,因此您无法更新注入的值(因为它是一个字符串)——您只是更改注入变量的内容。您可以采用另一种方法将字符串包含在对象中,现在您可以更新对象中的字符串:

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);
    });
Run Code Online (Sandbox Code Playgroud)