AngularJS使用的DataService breezejs它没有解决的承诺(AngularJS

2019-10-18 09:43发布

我试图建立一个数据服务正在使用breezeJS我的角度应用。 我解决我的诺言之后,我不能让我的控制器以文件的。那么。 我在我的数据业务通过的微风中获取数据从我的数据库了。 我可以传回微风希望,但是我希望能够使用$ q.all当我所有的数据已被发现就知道了。

在我controller`

ProApp.controller( 'caseInfoController',功能caseInfoController($范围,$日志,$超时,caseDataService){

    /***initialize data ***/
   // initializeApp();


    ATPinitializeApp();


    function ATPinitializeApp() {

        $scope.MyStateList=   caseDataService.getAllStates()
         .then(function assignStates(data) {
             $log.info("THIS THEN WILL NOT FIRE");               
         });

    }

`

以上来自数据服务的承诺被满足时,则不会触发。

ProApp.factory('caseDataService', function ($log, $q)
{

breeze.config.initializeAdapterInstance("modelLibrary", "backingStore", true);


var servicename = "http://localhost:60882/breeze/SPLBreeze";
var manager = new breeze.EntityManager(servicename);

var caseDataService =
{
   getAllStates: getAllStates,

};

return caseDataService;

/*** implementation details ***/


function getAllStates()
{

  var myStatePromise = $q.defer();

  var query = breeze.EntityQuery
      .from("state");

  manager.executeQuery(query)
    .then(function (data) {
        $timeout(function () { myStatePromise.resolve(data); }, 200);;
    });

  return myStatePromise.promise;
};

任何帮助将不胜感激。 我敢肯定不是100%,如果我有$ Q承诺正确设置。 最后,我想用一个$ q.all以确定各种承诺的阵列已经被解决,这样我就可以更新信息给用户。 我一直在读,我需要使用超时来获得角度认识到,改变在未来的事件循环发生。

Answer 1:

你盯着一个角度$ Q错误的桶。 你可以阅读一下在这里如果你想。

这将不利于几乎一样的建议下我回答这个相关的StackOverflow问题,我在其中显示和描述的适配器从Q.js承诺到$ Q承诺得到。



Answer 2:

我从来没有使用过的微风,但我觉得你的问题是,你没有返回的成功回调东西..

  /***initialize data ***/
    . . .
    function ATPinitializeApp() {

        $scope.MyStateList=   caseDataService.getAllStates()
         .then(function assignStates(data) {
             $log.info("THIS THEN WILL NOT FIRE");  
             return data; // If you don´t return anything nothing will be added to the scope.
         });

    }

此外,由于角度解析承诺异步的getAllStates功能$超时不应该necesary(它会将使用$ rootScope分辨率。$ evalAsync)

function getAllStates()
{
. . .

  manager.executeQuery(query)
    .then(function (data) {
       // I believe the $timeout that was in this function is not necessary
       myStatePromise.resolve(data);
    });

  return myStatePromis

e.promise;

}

希望这可以帮助你一点点。

问候,

普约尔



文章来源: AngularJS dataservice using breezejs it not resolving the promise