Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在AngularJS中将函数从控制器移动到服务_Javascript_Html_Angularjs_Function - Fatal编程技术网

Javascript 在AngularJS中将函数从控制器移动到服务

Javascript 在AngularJS中将函数从控制器移动到服务,javascript,html,angularjs,function,Javascript,Html,Angularjs,Function,我的控制器中有以下各项: $scope.getParameterByName = function (name) { name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search)

我的控制器中有以下各项:

    $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')}}
我想将函数移动到服务中,以便在其他控制器之间重用这段代码

我将函数移到控制器中,并将
$scope.getParameterByName
重命名为
this.getParameterByName

我确保将模块和服务注入我的控制器

在我的控制器中,我添加了以下代码:

$scope.getParameterByName = function (name) {
    newService.getParameterByName(name);
};
但是,现在我的HTML中的表达式不会呈现结果。如果我将以下内容添加到我的服务中:

console.log(结果[1])


它正在记录正确的结果。要再次正确呈现表达式,我在controller/HTML中缺少了什么?

您没有从方法返回结果值

$scope.getParameterByName = function (name) {
    return newService.getParameterByName(name);
};
更优雅的解决方案是将服务方法的引用绑定到范围变量

$scope.getParameterByName = newService.getParameterByName; //referenced service method

谢谢关于替代解决方案的建议很棒,更好。很高兴为您提供帮助。谢谢:)