gpt4 book ai didi

javascript - Angular 服务返回函数错误

转载 作者:行者123 更新时间:2023-11-28 14:59:52 25 4
gpt4 key购买 nike

在下面的两个示例中,我使用两种不同的结构来返回服务。首先,我在大括号中返回函数,第二次,我按函数名称返回函数。根据我的说法,两者都应该可以正常工作。

虽然案例 1 有效,但案例 2 失败。有人可以解释为什么吗?

案例1

// module declaration
var app = angular.module('myApp', []);

// controllers declaration
app.controller('myCtrl', function($scope, baseService ){
$scope.name = "Peter";
var a = baseService.helloFunction()
console.log(a);
});

// services declaration
app.service('baseService', function($http){
return{
// For Rating Chart
helloFunction: function() {
return "Hello";
}

}

});
<body ng-app="myApp" ng-controller="myCtrl"> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.5/angular.min.js"></script>
</body>

情况2:

//module declaration
var app = angular.module('myApp', []);

//controllers declaration
app.controller('myCtrl', function($scope, baseService ){
$scope.name = "Peter";
var a = baseService.helloFunction()
console.log(a);
});

// services declaration
app.service('baseService', function($http){

// For Rating Chart
helloFunction: function() {
return "Hello";
}

return helloFunction();

});
<body ng-app="myApp" ng-controller="myCtrl"> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.5/angular.min.js"></script>
</body>

在这种情况下,虽然案例 1 工作正常,但案例 2 失败了!在这两种情况下,在服务结构中,我都是在外部函数中返回内部函数。为什么情况2不起作用?

最佳答案

情况 2 有语法错误,并且您正在返回函数 helloFunction 的输出。当您调用它时。

由于 string 没有 helloFunction() 函数,因此会抛出错误。

这里是代码片段。

//module declaration
var app = angular.module('myApp', []);

//controllers declaration
app.controller('myCtrl', function($scope, baseService) {
$scope.name = "Peter";
var a = baseService.helloFunction()
console.log(a);
});

// services declaration
app.service('baseService', function($http) {
// For Rating Chart
this.helloFunction = function() {
return "Hello";
}
});

//Or, Create factory
app.fatory('baseService2', function($http) {
// For Rating Chart
var helloFunction = function() {
return "Hello";
}
return {
helloFunction: helloFunction
};
});
<body ng-app="myApp" ng-controller="myCtrl">
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.5/angular.min.js"></script>
</body>

关于javascript - Angular 服务返回函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41457524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com