Reputation: 59
i display the data like
<tr ng-repeat="item in getAllEngagementItems | filter:searchText">
<td>{{item.wafId}}</td>
<td>{{item.engagementProjectName}}</td>
<td>{{item.engagementLibraryStatus}}</td>
</tr>
In controller
app.controller("EngagementController", function ($scope, WAFDatafactory) {
$scope.getAllEngagementItems = myfunction();
function myfunction() {
var output;
var items = WAFDatafactory.getAllEngagementItems();
items.$promise.then(function (results) {
$scope.$emit('UpdateEngagementCount', results.length);
output = results;
console.log("Output detais :" + output);
}
, function (error) {
alert("Failed to Retrive data from server" + error);
console.log("Error detais :" + error);
});
return output;
}
});
datafactory
factory.getAllEngagementItems = function () {
var allEngagementItems = $resource("/api/data/GetEngagementData/").query();
return allEngagementItems;
}
output :
Output detais :[object Object],[object Object],[object Object]....
my scope.getAllEngagementItems does not get updated and view does not get list items.
Upvotes: 1
Views: 124
Reputation: 1367
I don't see that output
is necessary. You can just return a promise.
app.controller("EngagementController", function ($scope, WAFDatafactory) {
$scope.getAllEngagementItems = myfunction();
function myfunction() {
var items = WAFDatafactory.getAllEngagementItems();
items.$promise.then(function (results) {
$scope.$emit('UpdateEngagementCount', results.length);
console.log("Output detais :" + results);
}
, function (error) {
alert("Failed to Retrive data from server" + error);
console.log("Error detais :" + error);
});
return items;
}
});
The reason that your code didn't work was:
When myFunction()
was run, WAFDatafactory.getAllEngagementItems()
returned a promise, but the actual query was run async. So the value of output
would be undefined
when you returned it. However, undefined
is a primitive value instead of an object. So when you updated output
later on, it would never effect the real value of $scope.getAllEngagementItems
.
Upvotes: 1