将服务中的函数绑定到$scope(错误:无法设置undefined的属性'onChange')
Bind a function in service to $scope (Error: Cannot set property 'onChange' of undefined)
我无法将服务中声明的函数绑定到控制器。我基本上是在尝试将服务中的onChange函数绑定到控制器$scope中的onChange函数。我得到这个错误:
angular.js:13424类型错误:无法设置未定义的属性"onChange"
这是我的服务
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);
});
}
});
控制器:
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);
});
}]);
你能帮吗
只是对Ahmed答案的更正。您需要将服务方法作为引用,而不是执行它的结果。因此,上面的代码需要更新为:
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);
});
}]);
我认为你只是把$scope.onChange = myService.onChange();
放错了地方,试试:
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);
});
}]);
Ahmed回答后,如果你想绑定到函数而不是函数的结果,你必须设置为函数,而不是他的结果。在您的情况下:
$scope.onChange = myService.onChange;
而不是:
$scope.onChange = myService.onChange();
这是错误
$http.get('/myapp/stocknames').
$scope.onChange=myService.onChange();
后有一个点.
$http.get('/myapp/stocknames')
将其替换为分号,因为javascript以这种方式理解
$http.get('/myapp/stocknames').$scope.onChange=myService.onChange();
感谢
相关文章:
- 将服务中的函数绑定到$scope(错误:无法设置undefined的属性'onChange')
- 如果我们设置undefined的值会发生什么
- 为什么ajax回调在我的本地变量中设置undefined
- app.render[TypeError:无法设置undefined的属性'content']在Node
- jQuery Tablesorter 错误“未捕获的类型错误:无法设置 undefined 的属性'count&
- Javascript 数组:将条目设置为 undefined
- 类型错误:无法在模块导出中设置 undefined 的属性
- Angularjs 绑定到 JSON 会将值设置为 undefined
- GoogleMaps v3 autocomplete.getBounds()在设置后返回undefined
- Jquery ui slider tabs不能设置undefined属性
- jquery-mobile事件顺序和为什么setTimeout设置$this为undefined
- 为什么我不能将NODE_ENV设置为undefined ?
- Angular不能设置undefined属性
- jQuery .val()在设置后立即产生undefined
- 为什么将复选框'的假值设置为'undefined'导致添加ng-invalid
- jQuery多维数组(动态键)-不能设置属性undefined
- 将Audio对象设置为undefined会导致内存泄漏吗?
- “undefined"不是检查表数组上的函数设置侦听器
- 如何处理'undefined'当我在Javascript中为对象设置方法时,从控制台中返回
- JavaScript 无法设置 undefined 的属性