我在saleforce VF中使用angular,并从apex控制器获取数据。
下面是相关代码:
function Quote_Details_Ctrl($scope,quoteDetailsFactory){
console.log('Inside Angular Controller');
$scope.quoteData = [];
$scope.quoteId = "{!$CurrentPage.parameters.quoteId}";
console.log('quoteId : ' + $scope.quoteId);
$scope.loadData = function(){
var promise = quoteDetailsFactory.loadData($scope.quoteId);
console.log('promise : ' ,promise);
promise.then(function(obj){
$scope.quoteData = obj;
console.log('obj : ' ,obj);
},[]);
console.log('quoteData : ',$scope.quoteData);
}
console.log('Hi Controller ');
$scope.loadData('quoteData2 : ',$scope.quoteData);
}
当我在控制台中打印obj时,它会正确打印数据。但是,当我将其分配给作用域变量并管理作用域变量时,它显示为没有数据的空对象。
有人可以告诉我是否遗漏了一些东西。
谢谢
答案 0 :(得分:1)
$scope.quoteData
必须在promise resolve函数中访问
$scope.loadData = function(){
var promise = quoteDetailsFactory.loadData($scope.quoteId);
console.log('promise : ' ,promise);
promise.then(function(obj){
$scope.quoteData = obj;
console.log('obj : ' ,obj);
console.log('quoteData : ',$scope.quoteData);
},[]);
}
答案 1 :(得分:0)
之所以发生这种情况,是因为在执行语句console.log('quoteData : ',$scope.quoteData);
时,诺言还没有解决。
您可以做的是要么仅通过.then()
函数访问此变量,要么可以在实现此承诺后调用另一个函数
promise.then(function(obj){
$scope.quoteData = obj;
console.log('obj : ' ,obj);
$scope.helperFunc(obj);
},[]);
$scope.helperFunc(quoteData) {
console.log("Here you can get the quoteData: " , quoteData)
}