2017-02-27 8 views
0

こんにちは私はアイテムのリストを持っています。このように:リストを通過する方法はありますか? Ionic Framework

// Some fake testing data 
    var chats = [{ 
    id: 0, 
    name: 'Ben Sparrow', 
    lastText: 'London', 
    face: 'img/ben.png' 
    }, { 
    id: 1, 
    name: 'Max Lynx', 
    lastText: 'Paris', 
    face: 'img/max.png' 
    }, { 
    id: 2, 
    name: 'Adam Bradleyson', 
    lastText: 'Berlin', 
    face: 'img/adam.jpg' 
    }, { 
    id: 3, 
    name: 'Perry Governor', 
    lastText: 'Tokio', 
    face: 'img/perry.png' 
    }, { 
    id: 4, 
    name: 'Mike Harrington', 
    lastText: 'Milan', 
    face: 'img/mike.png' 
    }]; 

すべてのリスト項目を見ると、都市の名前を持つlastTextがあります。そして、これは私のビューファイルです: `

<ion-item class="item-remove-animate item-avatar item-icon-right" ng-init="getWeather(chat.lastText)" ng-repeat="chat in chats" type="item-text-wrap" href="#/tab/chats/{{chat.id}}" > 
    <img ng-src="{{chat.face}}"> 

    <h2>{{cityname}}</h2> 
    <p>{{dweather}}</p> 
    <i class="icon ion-chevron-right icon-accessory"></i> 

    <ion-option-button class="button-assertive" ng-click="remove(chat)"> 
     Delete 
    </ion-option-button> 
    </ion-item> 
</ion-list> 

`

私は選択した都市の天気を返す関数getWeather(chat.lastText)を持っています。変数citynameおよびdweather。すべてのリスト項目のlastText変数に格納されているすべての都市の天気を表示したい。しかし、それはすべてのリストアイテムの最初の都市の天気だけを示しています。私の質問はそれを可能にする方法です。

+0

だけ呼び出しに対して[angularjsの可能性のある重複した機能を別のNGリピートを使用する方法を、次の試してください - ngInitとngRepeat - ngRepeatをレンダリングされた値をリフレッシュしません](http://stackoverflow.com/questions/15355122/angularjs-n grepat-with-nginit-ngrepeat-doesnt-refresh-rendered-value) –

答えて

1

私はあなたのgetWeather機能がどのようなものかわかりませんが、代わりに「グローバル」スコープの変数に結果を割り当てるので、あなたはchatオブジェクトにそれらを置く必要があります。

$scope.getWeather = function(chat) { 
    // get weather 
    weatherService.getWeather(chat.lastText).then(function(response) { 
     var weatherResult = response.data; 
     chat.cityname = weatherResult.cityname; 
     chat.dweather = weatherResult.dweather; 
    }); 
} 

次にあなたが表示することができますそれこのような:

​​
+0

この解決法は機能しません –

+0

あなたの 'getWeather'関数がどのように見えるか質問に含めてください。私が言ったように、あなたがあなたのコードを含んでいなかったので、私はあなた自身のコードに書かれた方法に基づいて適用しなければならないいくつかの前提を行いました – devqon

0

ng-initからgetWeather(chat.lastText)を削除し、だけの方法を以下試してください。 ng-initng-repeatで一度だけコールされます。

<ion-item class="item-remove-animate item-avatar item-icon-right" ng-repeat="chat in chats" type="item-text-wrap" href="#/tab/chats/{{chat.id}}"> 
 
    <img ng-src="{{chat.face}}"> 
 
{{getWeather(chat.lastText)}} 
 
    <h2>{{cityname}}</h2> 
 
    <p>{{dweather}}</p> 
 
    <i class="icon ion-chevron-right icon-accessory"></i> 
 

 
    <ion-option-button class="button-assertive" ng-click="remove(chat)"> 
 
    Delete 
 
    </ion-option-button> 
 
</ion-item> 
 
</ion-list>

または

<ion-item class="item-remove-animate item-avatar item-icon-right" ng-repeat="chat in chats" type="item-text-wrap" href="#/tab/chats/{{chat.id}}"> 
 
    <img ng-src="{{chat.face}}"> 
 
    <div ng-repeat="n in getWeather(chat.lastText)"></div> 
 
    <h2>{{cityname}}</h2> 
 
    <p>{{dweather}}</p> 
 
    <i class="icon ion-chevron-right icon-accessory"></i> 
 

 
    <ion-option-button class="button-assertive" ng-click="remove(chat)"> 
 
    Delete 
 
    </ion-option-button> 
 
</ion-item> 
 
</ion-list>

+0

私はこれを前に試しました。ハードループが発生します。リストのすべての項目は、リストビューをすばやく移動します。それはループを引き起こします –

+0

私の答えを更新しました.. –

+0

あまりにも機能しません。同じループが再び@ stack-fanになる –

関連する問題