2013-05-16 20 views
7

アイテムを配列にプッシュすると、ビューはリストをリフレッシュしません。角度:リストにアイテムをプッシュしてもビューが更新されない

テーブル:

<tbody id="productRows"> 
    <tr data-ng-repeat="product in products | filter: search"> 
     <td>{{ product.Code}}</td> 
     <td colspan="8">{{ product.Name}}</td> 
    </tr> 
</tbody> 

形式:コントローラで

<form data-ng-submit="submitProduct()"> 
    Code: 
    <br /> 
    <input type="text" required data-ng-model="product.Code"/> 
    <br /> 
    <br /> 
    Naam: 
    <br /> 
    <input type="text" required data-ng-model="product.Name"/> 
    <br /> 
    <input type="submit" value="Opslaan" /> 
</form> 

submitProduct:あなたが見ることができるように

$scope.submitProduct = function() { 
    console.log('before: ' + $scope.products.length); 

    $scope.products.push({Code: $scope.product.Code, Name: $scope.product.Name}); 
    console.log('after:' + $scope.products.length); 
    console.log($scope.products); 

    $scope.showOverlay = false; 
}; 

、私は、配列内のアイテム数を記録し、それがのように振る舞います私は期待しています。私が期待していることをしない唯一の事は、新しい価値を示さない私のテーブルの内容です。

私は何をしなければならないので、新しい行がテーブルに表示されますか?

+0

動作するはずです。 jsfiddleまたはplnkrを追加してください。 –

+1

あなたのコードでこの[plnkr](http://plnkr.co/edit/UXvtEhNbiilRn6DjX93P?p=preview)は正常に動作しますか? $ scope.productsを正しく定義していますか? –

+0

'submitProduct()'を呼び出すコードは何ですか?このコードがAngularの外側で実行されている場合、 'submitProduct()'メソッドの最後に '$ scope。$ apply()'を呼び出して、Angularがダイジェストサイクルを実行するようにする必要があります。更新する。 –

答えて

5

回答とコメントをありがとう。問題は別の場所でした。私のrouteProviderでは、私はコントローラを宣言しました。私はまたng-controllerディレクティブを私の部門に持っていた。だから私のコントローラは2回実行されます。 ng-controllerディレクティブを削除したとき、すべてが正常に動作していたようです。

+0

ありがとう!それは私の問題を解決しました。私の体はすでにng-controller属性を持っていましたが、私はrouteProviderでコントローラを宣言しました。それがどのように問題だとあなたはどのように知りましたか? –

+0

@DanielFloresまあ、私は最初から最後まで私のコードを見る。だから私はap..module、app.routesから始めました。私が私の見解を見ると、同じコントローラを2度宣言したことに気付きました。私のルートと私の見解では、 – Martijn

+0

良いショー、ありがとう – jcc

5

残りのコードは表示されませんが、コントローラに$scope.productsが定義されていることを確認してください。

これを参照してくださいexample

私はあなたが提供するコードに作られた唯一の追加されました:

$scope.products = []; 

これは、より多くの情報を提供してください解決しない場合。

+0

あなたのソリューションは私のために働いた。私は同じ問題を抱えていました。ここでは、$ scope.lists.push({});にプッシュされていません。私は$ scope.lists = [];を宣言しました。それは魅力のように働いた。ありがとう。 –

関連する問題