5

我嘗試使用rootScope變量在我的離子項目中聲明全局列表。我的目標是用特定的消息更新這個列表。根據我的情況,我對他們的形式有不同的看法。我嘗試在應用程序的另一個視圖中執行完整的操作。當我按下「x」形式的按鈕時,「x形式已完成」消息應該被推入該全局列表中。之後,當我按下「y」形式的按鈕時,「y形式已完成」消息應該被追加到該列表中。然後,我在完成的操作視圖中顯示全局列表的內容。使用angularjs創建和更新全局列表

在每個視圖中,我有一個按鈕,如screenshot2所示。

另外,我連接與所述controller.js控制器那些視圖以下文件:

我創建使用rootScope爲其它控制器到達該列表中的全局列表值

.controller('MainCtrl', function($scope, $rootScope, $state) { 

     $rootScope.onButtonClick = function (obj) { 
     $rootScope.buttons = []; 
     $rootScope.buttons.push(obj); 
     $state.go('app.completed'); 
    } 
}) 

然後我連接與另一個控制器的「已完成操作」視圖顯示列表的最終視圖,以查看應用程序中所有按下的按鈕:

.controller('CompletedCtrl', function($scope,$rootScope,$state) { 

    $scope.buttons = $rootScope.buttons; 

    $scope.onCompletedButtonClick = function(){ 
    $state.go('app.homepage'); 

    } 

}) 

完成操作視圖(HTML文件):


<span style="color:white">COMPLETED TravelBuddy</span> 

</ion-nav-title> 

<ion-content> 

    <div class="list"> 

    <ion-list> 

    <ion-item ng-repeat="item in buttons"> 
    {{item}}! 
    </ion-item> 

    </ion-list> 

    <label class="item"> 
     <button class="button button-block button-balanced" ng-click="onCompletedButtonClick()">+</button> 
    </label> 
</div> 

</ion-content> 

我跑我的移動應用程序後,我不能顯示所有推的項目從列表中,我只看到第一個按下按鈕消息在截圖1中的完成操作中。我怎麼能解決這個問題? screenshot1screenshot2

回答

2

您寫道「消息應附加到該列表。」

但每次單擊按鈕時都清理它。

將此行移出onButtonClick:rootScope.buttons = [];

+0

謝謝您的建議:)但是,當我在控制器中的函數外攜帶$ rootScope.buttons []聲明時,遇到同樣的問題,我再次看到只有一條消息此時按下的按鈕。我認爲我在使用$ rootScope時做錯了什麼。我的目標是聲明一個全局列表,每次控制器工作時,都應該通過按鈕來更新列表。也許錯誤來自'MainCtrl',因爲當它被觸發時,數組被重新初始化並變爲空。你能建議我解決這個問題嗎? – Gizem

2

工作plunker https://plnkr.co/edit/Y2cJrUGYcygvM9i6wKx5?p=preview

<ion-item ng-repeat="item in buttons track by $index"> 
    {{item}}! 
    </ion-item> 

如果你想推副本track by $index應該在那裏。否則,你將無法推動,錯誤將被拋出

工作代碼

$rootScope.buttons = []; 
$rootScope.onButtonClick = function (obj) { 
     $rootScope.buttons.push(obj); 
     $state.go('app.completed'); 
    } 

名單肯定會更新,但如果你沒有使用ng-repeat="item in buttons track by $index",上面的代碼將拋出,如果出現錯誤你推dupes。因此,添加track by $index以獲得期望的結果

+0

謝謝您的建議:)但是,當我在控制器的函數外部攜帶$ rootScope.buttons []聲明時,遇到同樣的問題,我再次看到只有一個按鈕被按下的消息。我認爲我在使用$ rootScope時做錯了什麼。我的目標是聲明一個全局列表,每次控制器工作時,都應該通過按鈕來更新列表。也許錯誤來自'MainCtrl',因爲當它被觸發時,數組被重新初始化並變爲空。你有什麼建議我解決它?@Tal Bussel – Gizem

+0

檢查控制檯。可能有'dupes'的錯誤。告訴我它是否在那裏? –

+0

我添加了你提供的狀態,但是我解決不了,也許問題是關於控制器和視圖之間的關係。我無法實現全局數組邏輯並將其內容顯示在另一個頁面中。此外,我用consolelogs命令檢查錯誤,但什麼也沒看到。 – Gizem