我已将服务注入指令,有没有办法可以在指令中共享服务中的数据
就好像我有一个名为resultsDirective
的指令一样,已经注入了一些名为dataService
的服务(随着时间的推移,这些服务正在进行中)。有没有办法可以从指令中的服务访问变量?为了实现一些目的:
angular.module("someModule").service("dataService", function() {
var shareVariable;
})
angular.module("someModule").directive("resultsDirective" , ["dataService", function(dataService) {
return {
restrict: ,
scope: ,
link: function() {}
//sorry about the lack of implementation here, just made something skeletal
}
}])
所以,如果我只想console.log
shareVariable
resultsDirective
,我将如何访问该数据?我相信Angular有一个简单的方法吗?
答案 0 :(得分:0)
这不是一个有角度的问题,这是一个javascript问题。您无法访问范围外的本地范围变量。您必须通过执行类似
的操作来公开sharedVariableangular.module("someModule").service("dataService", function() {
this.shareVariable = null;
});
(function () {
var app = angular.module('myApp', []);
app.service("dataService", function () {
this.shareVariable = 'shohel';
});
app.directive("resultsDirective", ["dataService", function (dataService) {
return {
restrict: 'E',
scope: {},
link: function (scope, ele, att) {
var svc = dataService.shareVariable;
}
};
}]);
})();
答案 1 :(得分:0)
首先,请记住服务是一种单身,因此修改服务中的变量将对您的所有应用程序产生影响。你遇到的问题是你不知道关闭是什么,我建议你看一下JS Closure
如何解决这个问题?两个选项:
代码示例
var myModule = angular.module('myModule' []);
myModule.factoy('service', function () {
var myVariable;
return {
getMyVariable: function () { return myVariable; },
setMyVariable: function (newVal) { myVariable = newVal; }
}
});
实际上你可以做更多事情,但我不知道你需要什么
此外,您的服务无效,请查看:Creating Services - AngularJS