我有一个角度控制器(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/