我的 Controller 中有以下内容:
$scope.getParameterByName = function (name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
};
在我的 HTML 中:
{{getParameterByName('test')}}
我想将该函数移至服务中,以便在其他 Controller 上重用这段代码。
我将该函数移至 Controller 中,并将 $scope.getParameterByName
重命名为 this.getParameterByName
我确保将模块和服务注入(inject)到我的 Controller 中。
在我的 Controller 中我添加了以下代码:
$scope.getParameterByName = function (name) {
newService.getParameterByName(name);
};
但是,现在我的 HTML 中的表达式不会呈现结果。如果我将以下内容添加到我的服务中:
console.log(结果[1]);
它正在记录正确的结果。我的 Controller /HTML 中缺少什么才能再次正确渲染表达式?
最佳答案
您错过了从方法返回结果值。
$scope.getParameterByName = function (name) {
return newService.getParameterByName(name);
};
更优雅的解决方案是将服务方法的引用绑定(bind)到范围变量
$scope.getParameterByName = newService.getParameterByName; //referenced service method
关于javascript - 在 AngularJS 中将函数从 Controller 移动到服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34098484/