angular js - 创建自定义服务

时间:2018-03-14 14:30:08

标签: javascript angularjs

我开始在w3schools教程中学习angularjs。下面是编写自定义服务的示例

app.service('hexafy', function() {
    this.myFunc = function (x) {
        return x.toString(16);
    }
});


app.controller('myCtrl', function($scope, hexafy) {
    $scope.hex = hexafy.myFunc(255);
});

为什么以下不起作用 -

app.service('hexafy', function(x) {
        return x.toString(16);
});
app.controller('myCtrl', function($scope, hexafy) {
  $scope.hex = hexafy(255);
});

这里我让函数接受一个参数并处理它而不在其中创建一个新函数。但这种方法似乎不起作用。

2 个答案:

答案 0 :(得分:4)

服务应该是可实例化的函数,因此Angular会为您创建服务实例,就像构造函数一样。如果您只想注册要调用的函数而不构造实例使用值:

app.value('hexafy', function(x) {
  return x.toString(16);
});

答案 1 :(得分:1)

您需要一个方法是访问服务类的值,最好保留一个方法以满足您的需求,我相信以下是您需要的代码。

app.service('hexafy', function() {
        this.toString = function(x){
        return x.toString(16);
        }
});
app.controller('myCtrl', function($scope, hexafy) {
  $scope.hex = hexafy.toString(255);
});

或者您可以像上面的答案那样访问它。