我有一个角度控制器(TimeCtrl)和一个工厂(DataService),该工厂管理其他一些控制器中的数据。

在TimeCtrl中,有$ scope.dateFrom和$ scope.dateTo这样的变量。我想让它们与DataService中的相应变量(wacht.dateFrom和wacht.dateTo)共享一个内存空间。

我不想有多个观察者,这些观察者在DateFrom输入中查找更改以在DataService中也对其进行更改。

简而言之:变量应与另一个变量共享其值,而无需使用同步功能。

有解决方案吗?



$scope.dateTo = DataService.getWacht().dateTo = '';


在TimeCtrl中无法正常工作。

感谢您的帮助。

最佳答案

如果使用对象并将其分配为控制器和工厂实例的属性,则非常简单。

您可以这样做:

angular
    .module('app', []);

angular
    .module('app')
  .controller('Example', function (exFactory) {
    this.obj = exFactory.obj;
  });

angular
    .module('app')
  .factory('exFactory', function () {
    return {
        obj: {
        x: 0
      }
    };
  });


有关完整示例,请参见以下小提琴:https://jsfiddle.net/rnvLerqj/

07-25 23:12