gpt4 book ai didi

javascript - 将服务中的函数绑定(bind)到$scope(错误: Cannot set property 'onChange' of undefined)

转载 作者:行者123 更新时间:2023-11-28 12:21:38 24 4
gpt4 key购买 nike

我无法将服务中声明的函数绑定(bind)到 Controller 。我基本上试图将服务中的 onChange 函数绑定(bind)到 Controller $scope 中的 onChange 函数。我收到此错误:

angular.js:13424 TypeError: Cannot set property 'onChange' of undefined

这是我的服务

app.service('myService', function($http, $rootScope) {
this.selected = {
item: ''
}
this.getData = function(key){
return $http.get('/myapp/stocklist/AMZN');
}
this.gs = [];
var sr = [];
this.siri=[];
var vm=this;

this.cleanData = function(response){
for( var i=0; i<response.data.length; i++ ) {
vm.gs.push(response.data[i].name);
sr.push(response.data[i].high);
}
vm.siri.push(sr);
}
this.onChange = function(key){
vm.getData(key).then(function(response){
vm.cleanData(response);
console.log(vm.siri);
});
}
});

和 Controller :

app.controller('select', ['$scope', '$http', 'myService', function($scope,$http, myService) {
$scope.selected = myService.selected;
$http.get('/myapp/stocknames').
$scope.onChange = myService.onChange(); // why is this giving error? how do I do it?
success(function(data) {
$scope.names=data;
console.log($scope.names);
});
}]);

请帮忙

最佳答案

只是对艾哈迈德答案的更正。您需要将服务方法作为引用来引用,而不是执行它的结果。所以上面的代码需要更新为:

app.controller('select', ['$scope', '$http', 'myService', function($scope,$http, myService) {
$scope.selected = myService.selected;
$scope.onChange = myService.onChange;
$http.get('/myapp/stocknames').
success(function(data) {
$scope.names=data;
console.log($scope.names);
});
}]);

关于javascript - 将服务中的函数绑定(bind)到$scope(错误: Cannot set property 'onChange' of undefined),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36669014/

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