如何调用服务方法从ng的变化的select在angularjs?
发布时间:2020-12-17 08:37:11 所属栏目:安全 来源:网络整理
导读:我是新的角j。我试图调用工厂服务方法’getScoreData’从ng的变化,但不能够得到它完成。请帮忙。 Html代码: select ng-model="Score" ng-change="getScoreData(Score)" ng-options="c.name for c in Scores"/select Angularjs代码: var app = angular.mod
我是新的角j。我试图调用工厂服务方法’getScoreData’从ng的变化,但不能够得到它完成。请帮忙。
Html代码: <select ng-model="Score" ng-change="getScoreData(Score)" ng-options="c.name for c in Scores"></select> Angularjs代码: var app = angular.module('audiapp',[]); app.controller('audiLayoutCtrl',function ($scope,ScoreDataService) { ScoreDataService.getScoreData($scope.Score,function (data) { $scope.ScoreData = data; }); }); app.factory('ScoreDataService',function ($http) { return { getScoreData: function (Score,callback) { var params = { questionCode: Score.code } return $http({ url: 'Home/GetAvgData',method: 'GET',params: params }).success(callback); } }; }); 上面是服务工厂方法并从控制器实例化。我尝试从ng的变化的选择实例化,但它既不给出错误也不得到调用。
您的代码至少有两个问题:
> ng-change =“getScoreData(Score) Angular没有看到getScoreData方法引用定义的服务 我们不需要使用回调,因为GET返回promise。然后改用。 这里是一个工作示例(我使用随机地址仅用于模拟): HTML <select ng-model="score" ng-change="getScoreData(score)" ng-options="score as score.name for score in scores"></select> <pre>{{ScoreData|json}}</pre> JS var fessmodule = angular.module('myModule',['ngResource']); fessmodule.controller('fessCntrl',function($scope,ScoreDataService) { $scope.scores = [{ name: 'Bukit Batok Street 1',URL: 'http://maps.googleapis.com/maps/api/geocode/json?address=Singapore,SG,Singapore,153 Bukit Batok Street 1&sensor=true' },{ name: 'London 8',London 8&sensor=true' }]; $scope.getScoreData = function(score) { ScoreDataService.getScoreData(score).then(function(result) { $scope.ScoreData = result; },function(result) { alert("Error: No data returned"); }); }; }); fessmodule.$inject = ['$scope','ScoreDataService']; fessmodule.factory('ScoreDataService',['$http','$q',function($http) { var factory = { getScoreData: function(score) { console.log(score); var data = $http({ method: 'GET',url: score.URL }); return data; } } return factory; }]); 演示Fiddle (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |