AngularJS在组件之间共享数据

时间:2018-02-04 15:00:46

标签: javascript angularjs

请参阅此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}}不会更改。

1 个答案:

答案 0 :(得分:0)

这是因为字符串不是引用类型,而是值类型。 你不能传递字符串,因为它只是被复制而不是被引用。

messages.userInput = sharetexts.userInput; 

这里你只是创建新的字符串,而不是它的引用。

检查此plnkr

https://plnkr.co/edit/rR6MB9QDGCIiYYJ7i1CL?p=preview