3

我是 Angular JS 的新手,并且真的很难从 javascript 远程处理将数据输入我的控制器。有没有人这样做过?

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);
        }
    );    

};
4

1 回答 1

1

我没有使用 javascript 远程处理(听起来很有趣),但您可能想要做的是将您的 visualforce 代码封装在服务中,有一个方法(很可能是一个承诺)来返回您的数据并将服务注入您的控制器。这样做的好处是您可以通过注入数据服务的模拟或间谍来对控制器进行单元测试。该模式与您使用 Angular 的 $http 和 $resource 服务的方式非常相似。希望这能让你走上正确的轨道。

于 2012-11-23T18:57:03.417 回答