2016-07-15 26 views
0

我试图从数据库获取数据到UI。通过提供商提供的网址获取数据。从提供者到控制器在angularJs中传递值

控制器中的控制器 DetailsProvider.getDashboardDetails()变为null。

var appmod = angular.module('project.DetailDashboardController', []); 

appmod.controller("DetailDashboardController", ['$rootScope', '$scope', '$state', 'DetailsProvider',function($rootScope, $scope, $state,DetailsProvider) { 
    console.log("DetailDashboardController --- "); 

    $scope.DetList= DetailsProvider.getDashboardDetails() 

}]); 

})(window, window.angular); 

提供商,它将调用列表

(function(angular) { 

var appmod = angular.module('project.DetailsServiceProvider', []); 
appmod.provider('DetailsProvider', function() { 
    this.$get = ['_$rest', function DetailServiceFactory(_$rest) { 
     return new DetailsProvider(_$rest); 
    }]; 
}); 

function DetailsProvider(_$rest) { 
    this._$rest = _$rest, 
    this.getDashboardDetails = function(_callback, _data) { 
     var newData = null; 
     _$rest.post({ 
      url: window.localStorage.getItem('contextPath') +'home/listdetail', 
      data: {} , 
      onSuccess:_callback 
      } 
     }); 

    } 
}; 

})(window.angular); 

预先感谢任何样的答复!

+0

正是我想知道的是函数的成功值(在构造函数)如何才能传递给控制器​​?有一点需要注意的是该调用在提供商 –

回答

1

您应该从您的服务方法中返回promise,并在您的控制器中执行then

根本原因:您正在回归,这将initalized后完成AJAX call.Before完成之后,你是返回,这将是总是空同一个变量的newData

在供应商,

(function(angular) { 

var appmod = angular.module('project.DetailsServiceProvider', []); 
appmod.provider('DetailsProvider', function() { 
    this.$get = ['_$rest', function DetailServiceFactory(_$rest) { 
     return new DetailsProvider(_$rest); 
    }]; 
}); 

function DetailsProvider(_$rest) { 
    this._$rest = _$rest, 
    this.getDashboardDetails = function(_callback, _data) { 
     var newData = null; 
     _$rest.post({ 
      url: window.localStorage.getItem('contextPath') +'home/listdetail', 
      data: {} , 
      onSuccess:_callback 
      } 
     });   
    } 
}; 

})(window.angular); 

和控制器,

$scope.list = function() { 
    DetailsService.getDashboardDetails(function(data){ 

      varr holdIt = data.data.DList; 

     }); 
}; 
+0

DetailsS​​ervice是我的一个提供者.. _ $ rest被定义了一个。应通过如上所述..现在我更改名称请检查与该 –

+0

ü使事情非常复杂。为什么你需要提供商。只需使用服务API。请检查编辑 –

+0

这是结构必须遵循..我无法改变这个事情......而且很难被卡住......而我对此很陌生。构造函数提供者和控制器这些都是必需的 –

相关问题