这个代码在角度有什么问题?

时间:2016-06-11 03:44:11

标签: javascript angularjs

在我的控制台中,错误即将出现“getIdData未定义”我的代码出了什么问题。这里的交易是我的服务,getIdData是我的服务功能。

$scope.editUserDetail = function editUserDetail(){
        $scope.showEditView = !$scope.showEditView;
        $scope.showSubmitView = !$scope.showSubmitView;
        console.log(deal);
        deal.getIdData().then(function successCb(data){
            $scope.editIdOptionsData=data;  
        });
};

4 个答案:

答案 0 :(得分:1)

请在此处查看工作示例:Demo

您忘记从服务中返回服务对象。

在您的服务中写下以下代码

return service;

angular.module('account').service('deal', function deal($http, accountConfiguration, $q, $log, httpHelper) {
     var service = {};
     var baseUrl = account.app.url;
     service.getIdData = function(data, accountId, decisionMakerDetail) {
            var def = $q.defer();
            var url = baseUrl + '/api/accountsusers/' + accountId + '?role=' + decisionMakerDetail;
            httpHelper._$http({
                      method: 'post',
                      url: url,
                      data: data,
                      def: def
             }, function(resp) {
                 def.resolve(resp.msg);
             });
             return def.promise;
      };

      return service;
});

或者在使用服务时,您可以使用

进行编写
angular.module('account').service('deal', function deal($http, accountConfiguration, $q, $log, httpHelper) {

     var baseUrl = account.app.url;
     this.getIdData = function(data, accountId, decisionMakerDetail) {
            var def = $q.defer();
            var url = baseUrl + '/api/accountsusers/' + accountId + '?role=' + decisionMakerDetail;
            httpHelper._$http({
                      method: 'post',
                      url: url,
                      data: data,
                      def: def
             }, function(resp) {
                 def.resolve(resp.msg);
             });
             return def.promise;
      };

  });

有关详细信息,请查看 - Services

答案 1 :(得分:0)

您作为参数发送的对象并未定义getIdData()函数。

将您的日志更改为:

console.log(deal.getIdData);

然后检查它是否返回功能代码/定义。

这是一个链接,其中包含如何实现工厂和服务的示例。 Angular factory and service

答案 2 :(得分:0)

请清理浏览器并检查source.Look是否加载了deal.getIdData()。可能没有加载。请正确加载。

答案 3 :(得分:0)

您没有从服务注册功能返回持有服务引用的对象。更改您的代码如下工作。

angular.module('account')
   .service('deal', function deal($http, accountConfiguration, $q, $log,  httpHelper) {
     var service = {};
     var baseUrl = account.app.url;

     service.getIdData = function(data,accountId,decisionMakerDetail){
        var def = $q.defer();
        var url = baseUrl + '/api/accountsusers/' + accountId + '?role=' + decisionMakerDetail;

        httpHelper._$http({
          method: 'post', url: url,  data: data, def: def
        }, function (resp) {
           def.resolve(resp.msg);
        });
          return def.promise;
     };

  return service;
});

即使deal服务已注册,但您没有从服务返回任何内容,其值未定义,当您尝试访问deal.getIddata()时,您会收到上述错误