1
私はIonicとAngular JSの新機能です。 ng-repeatディレクティブでコレクション(配列)を更新しようとしています。
これは私のコードです。角度/イオン:ng-repeatでの更新ビューが配列にバインドされています
VIEW:
<div ng-repeat="e in testList">...</div>
CONTROLLER:
.controller('TestCtrl', function ($scope, $stateParams) {
var param1 = $stateParams.param1;
$scope.testList = TestFactory.getTest(param1);
});
FACTORY
オブジェクトtestlistというは、 'カスタム・トリガー' の火災後に移入され.factory('TestFactory', ['Auth', function (Auth) {
auth = Auth.get();
listObj = {};
auth.on('custom-trigger', function(index, value){
addElement(index, value);
});
function addElement(index, value){
var obj = {}
obj.test=(value);
listObj[index].push(obj);
};
var TestFactory = {
getTest: function (index) {
if (typeof listObj[index] == 'undefined')
listObj[index] = [];
return listObj[index];
}
};
return TestFactory;
}])
:私が見ることができるので、それが正常に動作しますログの新しい値
このトリガーはアプリケーションの開始時に(多くの時間と毎回正常に動作します)、サーバーの通知後に発生します(ここで問題が発生します!!)。
ビューは更新されないという問題があります。データバインディングの問題だと思います。
:別の
$broadcast
とリスナーを追加してみてください。イベントの仕事と私が行う場合:console.log(TestFactory.getTest(param1))私は新しい値を見ることができますが、ビューは更新されません。 – enfix$ scopeを使用している場合$ apply();あなたのソリューションでは、それは働いています: $スコープ$で( 'elementAdded'、function(){ $ scope.testList = TestFactory.getTest(param1); $ scope。$ apply(); }); しかし、私は最高の解決策だとは思わない..... – enfix
@enfix私は実際に '$ apply'の中で' $ apply'を使わなければならないことに驚いています。 'TestFactory.getTest'が呼び出すたびに同じオブジェクトへの参照を返すためかもしれません。それは私の最高の推測です。 – SteamDev