【发布时间】:2017-06-10 01:22:21
【问题描述】:
我正在尝试通过工厂链接两个控制器。我想在一个控制器中设置一个指向工厂值myFactoryVar 的指针,以便当工厂中的值发生变化时,控制器中的值controllerVar 会发生变化。
我读过这篇文章,有几个人喜欢它AngularJS : The correct way of binding to a service properties
但我似乎无法让它与我的代码一起使用。也许是格式?也许我绑定到一个原始类型而没有意义。这是我到目前为止所得到的,知道如何让它按预期工作吗?
控制器 1:
;(function() {
'use strict';
angular
.module('myapp')
.controller('MyCtrl1', MyCtrl1);
function MyCtrl1(myTracker) {
var vm = this;
angular.extend(vm, {
controllerVar: myTracker.myFactoryVar,
myTrackerVarIncrement: myTrackerVarIncrement
});
function myTrackerVarIncrement() {
myTracker.myFactoryVarIncrement();
/* should log the same value as myFactoryVar but doesn't */
console.log(vm.controllerVar);
}
}
})();
控制器 2:
;(function() {
'use strict';
angular
.module('myapp')
.controller('MyCtrl2', MyCtrl2);
function MyCtrl2(myTracker) {
var vm = this;
angular.extend(vm, {
myTrackerVarIncrement: myTrackerVarIncrement
});
function myTrackerVarIncrement() {
/* I want to be able to increment the value in the factory, */
/* and by means of that, the value in the other controller too */
myTracker.myFactoryVarIncrement();
}
}
})();
工厂:
;(function() {
'use strict';
angular
.module('myapp')
.factory('myTracker', myTracker);
function myTracker() {
var factory = {
myFactoryVar: 1,
myFactoryVarIncrement: myFactoryVarIncrement
};
return factory;
function myFactoryVarIncrement() {
factory.myFactoryVar += 1;
}
}
})();
【问题讨论】:
-
错误是什么?
标签: javascript angularjs