簡體   English   中英

承諾返回數組范圍未更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM