如何在服务和控制器之间传递值

时间:2016-01-07 16:35:05

标签: javascript angularjs tabletop.js

如何将值从服务传递到控制器?我一直在阅读有关此问题的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;
      }

    }
  }
});

1 个答案:

答案 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 }); ,尽管这不是同步的。