2012-11-23 43 views
3

我是Angular JS的新手,並且很努力地從javascript remoting中獲取數據到我的控制器中。有沒有人做過這個?angular js force.com Javascript remoting

Visualforce.remoting.Manager.invokeAction('{!$RemoteAction.Forecasting.Users}', 
    new Object(),function(result, event){ 
    return result 
    } 
); 

如何在地球上我得到的數據到控制器:

var forecastingCtrl = function($scope, $q){ 
    $scope.lengths = function(){return '5'}; 
    $scope.users = []; 
} 

編輯:繼正常工作:

fc.service('Users', function($rootScope, $q) { 
    this.get = function(){ 
     var deferred = $q.defer(); 

      Visualforce.remoting.Manager.invokeAction('{!$RemoteAction.Forecasting.Users}',new Object(),function(result, event){ 
       if(event) { 
        $rootScope.$apply(function() { 
         deferred.resolve(result); 
        }); 

       } else { 
        deferred.reject(result); 
       }    
      }); 
      return deferred.promise; 

    } 

}); 

function forecastingCtrl($scope, $q, Users){ 
    $scope.lengths = function(){return '5'}; 


    var promise = Users.get(); 
    promise.then(
     function(users){ 
      $scope.users = users; 
     }, 
     function(reason){ 
      alert('Failed: ' + reason); 
     } 
    );  

}; 

回答

1

我還沒有使用JavaScript的遠程調用(聽起來很有趣),但你可能想要做的是將你的visualforce代碼封裝在一個服務中,並有一個方法(最有可能的)承諾)返回您的數據並將服務注入您的控制器。這樣做的好處是你可以通過注入數據服務的模擬或間諜來單元測試你的控制器。該模式將非常像您將使用角的$ http和$資源服務。希望這能讓你走上正軌。

+0

非常感謝您幫我們澄清一下丹。你是對的! – Adrian