请参阅此Plunker
有两个组成部分。 component1和common。我想在这两个组件之间共享数据。在component1.post
模块中,我创建了一个服务messages
。
// service
angular.module('component1.post').factory('messages', function(sharetexts) {
const messages = {};
messages.userInput = sharetexts.userInput;
messages.changeInput = function(text) {
sharetexts.change(text);
};
return messages;
});
在common.sharedata
模块
angular.module('common.sharedata', []);
angular.module('common.sharedata').factory('sharetexts', function() {
const sharetexts = {};
sharetexts.userInput = 'User Input';
sharetexts.change = function(text){
console.log('Service is called.');
sharetexts.userInput = text;
console.log(sharetexts);
}
return sharetexts;
});
问题出在component1.post
模块中,当我输入新文字时,我可以看到userInput
中的common.sharedata
已更改。 但在模块component1.list
中,{{list.userInput}}
不会更改。
答案 0 :(得分:0)
这是因为字符串不是引用类型,而是值类型。 你不能传递字符串,因为它只是被复制而不是被引用。
messages.userInput = sharetexts.userInput;
这里你只是创建新的字符串,而不是它的引用。
检查此plnkr