问题描述
我想从服务访问控制器值,如何访问它。 我尝试通过使用以下代码访问控制器值。
<script>
var app = angular.module('app', [])
.controller("ctrl1",['$scope','svc',function($scope,svc){
$scope.fun1=function(){
svc.service_set();
alert(svc.txt1);
alert(svc.txt2);
}
}])
.controller("ctrl2",['$scope','svc',function($scope,svc){
$scope.fun2=function(){
svc.service_set();
alert(svc.txt1);
alert(svc.txt2);
}
}]).
service("svc",function(){
var svc={};
svc.service_set=function()
{
//I want to access the controller values from here
svc.txt1=ctrl1.c1txt1;
svc.txt2=ctrl2.c2txt1;
}
return svc;
})
;
</script>
1楼
您不应在服务内部使用控制器。 服务旨在用作可重用逻辑的容器。 不是从服务中调用控制器,而是从控制器中调用服务方法
2楼
如果要在服务中存储控制器值,请将该值与连接传递给控制器??。
或者您的情况是$scope
。
.service(function () {
var dataStore = {};
this.set = function (ctrl, value) {
dataStore[ctrl] = value;
});
this.get = function (ctrl) {
return ctrl ? dataStore[ctrl] : dataStore;
};
});
我会重新考虑您的方法;
如果存在驻留在控制器中的值需要其他控制器访问,则所述值应源自服务和/或工厂。
甚至只是普通的constants
/ values
。
然后,控制器将获取所需的值,可能会对其进行修改,并将所有修改发送回服务,以便保持同步。
控制器是服务和视图之间的粘合剂,而不是相反。