[英]Promise return Array Scope not updated
我顯示數據像
<tr ng-repeat="item in getAllEngagementItems | filter:searchText">
<td>{{item.wafId}}</td>
<td>{{item.engagementProjectName}}</td>
<td>{{item.engagementLibraryStatus}}</td>
</tr>
在控制器中
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;
}
輸出:
輸出詳細信息:[對象對象],[對象對象],[對象對象] ....
我的scope.getAllEngagementItems沒有得到更新,視圖也沒有得到列表項。
我認為沒有必要output
。 您可以退還諾言。
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;
}
});
您的代碼無法正常工作的原因是:
當運行myFunction()
時, WAFDatafactory.getAllEngagementItems()
返回了WAFDatafactory.getAllEngagementItems()
,但實際查詢是異步運行的。 因此,當您返回output
時, output
的值將是undefined
。 但是, undefined
是原始值,而不是對象。 因此,以后再更新output
時,它將永遠不會影響$scope.getAllEngagementItems
的真實值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.