如何将值从服务传递到控制器?我一直在阅读有关此问题的stackoverflow问题,但没有一个解决方案似乎可以解决我的问题。我试图使用tabletop.js访问谷歌电子表格当我从服务我console.log时,我可以看到值但是当我尝试从控制器访问电子表格值时,我得到以下错误: chartService.getProperty不是一个函数
获取电子表格网址的代码运行正常。用get方法。不知道我在这里做错了什么。
控制器
angular.module('myapp')
.controller('piechartCtrl', function (chartService, $scope, config) {
$scope.values = chartService.getProperty();
});
Service.js
angular.module('myapp')
.service('chartService', function(){
return {
getUrl: function init(path) {
Tabletop.init( { key: path,
callback: showInfo,
simpleSheet: true } )
}
}
function showInfo(data, tabletop) {
return{
getProperty: function(){
return data
},
setProperty: function(value){
data = value;
}
}
}
});
答案 0 :(得分:0)
这是你的服务,我看到你回来的唯一一件事是getUrl。因此,您唯一可以从控制器访问的是chartService.getUrl函数。
.attr("preserveAspectRatio", "xMinYMin meet")
要让它正常工作,而我认为这不是理想的解决方案,它应该有效......
.attr("preserveAspectRatio", "none")
然后将service('chartService', function ()
{
return
{
getUrl: function init(path)
{
Tabletop.init({
key: path,
callback: showInfo,
simpleSheet: true
})
}
}
function showInfo(data, tabletop)
{
return
{
getProperty: function ()
{
return data
},
setProperty: function (value)
{
data = value;
}
}
}
});
替换为service('chartService', function ()
{
var returnObject =
{
getUrl: function init(path)
{
Tabletop.init({
key: path,
callback: showInfo,
simpleSheet: true
})
},
resultValue: {}
}
function showInfo(data, tabletop)
{
return
{
getProperty: function ()
{
return data
},
setProperty: function (value)
{
data = value;
returnObject.resultValue = value;
}
}
}
return returnObject
});
,尽管这不是同步的。