2013-06-25 48 views
0

我有一个函数调用角度资源,检索一个项目。我想让函数返回响应中收到的值。无论如何,如何在收到资源响应时从函数返回? Angular.js

function getTemplate (templateId) { 
    var Tx; 
      Template.getTemplate({id:templateId}) 
       .$promise.then(
        //success 
        function(response){ 
         Tx = response.response; 
         console.log (Tx); 
        }, 
        //error 
        function(error){ 
        Tx = false; 
        } 
       ); 
     return Tx 
     } 

当调用Template.getTemplate(123);我收到未定义的,但我应该得到的回应还是假的;

+0

在返回时未定义的函数,而应该返回promise。 –

+0

有没有办法返回承诺,或者我应该如何等待回复? –

回答

0

请重构代码如下它可能不是确切的代码,但是会帮助你,你还没有定义的Tx你,然后回调操作是异步操作,以便您的发射机将立即从返回内部分配的Tx

function getTemplate (templateId,$q) { 
    var deferred = $q.defer() 
      Template.getTemplate({id:templateId}) 
       .$promise.then(
        //success 
        function(response){ 
         deferred.resolve(response); 
        }, 
        //error 
        function(error){ 
        deferred.fail("error"); 
        } 
       ); 
     return deferred.promise; 
     } 
+0

我试过这个,$ promise是未定义的。我有角1.1.5。我从1.1.3版本中读到了可用的资源。 –

+0

可以请你设置一个小提琴或你的完整代码的跳板 –

+0

这是一个小提琴。 http://jsfiddle.net/JEnQW/4/谢谢。 –

相关问题