2017-02-06 16 views
0

私はこれを理解していません。 stSafeSrc attriubuteについて説明しているthe smart-table web pageには、$scope. displayedCollectionがどこに宣言されるのかわかりません。AngularJSスマートテーブルのドキュメント/デモバグはありますか?

テキストはsmart-table first creates a safe copy of your displayed collection言うと、私

私は、スマート・テーブルディレクティブはそれを宣言したことを想定していたが、サンプルコードでは、私のために動作しません

- テーブルの行が空である - そしてそれはに見えるものです私は問題になる。

たとえば、受け入れられた答えがthis questionの場合、$scope.displayedCollectionを空の配列として宣言し、AJAX応答を受け取ったときにその値を代入するユーザーが表示されます。しかし、ドキュメンテーションはそれを言及していません。

<table st-table="displayedCollection" st-safe-src="rowCollection"> 
     <thead> 
     <tr> 
      <th st-sort="firstName">First Name</th> 
      <th st-sort="lastName">Last Name</th> 
     </tr> 
     </thead> 
     <tbody> 
     <tr ng-repeat="row in displayedCollection"> 
      <td>{{row.firstName}}</td> 
      <td>{{row.lastName}}</td> 
     </tr> 
     </tbody> 
</table 


app.controller('Ctrl', function($scope, service) { 
    $scope.displayedCollection = []; 

    service.all.then(function(list) { 
     $scope.rowCollection = list; 
     $scope.displayedCollection = list; 
    }); 
}); 

ですから、自分でコピーを気にする必要がありますか?そしてドキュメンテーションは更新する必要がありますか?デモはどのように機能しますか?


[更新]私は@ tufan-yoc

によってあなたはスコープ内の他の変数にデータ配列をコピーする必要があり、the github issuesでこれを見つける:

st-table="displayedCollection" st-safe-src="rowCollection" 

および

//copy the references (you could clone ie angular.copy 
// but then have to go through a dirty checking for the matches) 
    $scope.displayedCollection = [].concat($scope.rowCollection); 

これが本当に必要条件である場合、なぜそれが明示的に文書化されていないのですか?

スマートテーブルのWebサイトの例は、それがないとなぜ機能しますか?

答えて

0

いいえ、バグではありません。 SmartTablesは、のオブジェクトまたは配列に使用する任意の名前を作成し、stSafeSrc属性を使用すると元のデータのコピーを保持します。データが表示されない場合は、rowCollectionオブジェクトをチェックしてください。元の配列が含まれている必要があります。 Chromeで作業している場合はng-inspector for AngularJSを試して、アプリのスコープを確認してください。また、あなたのコードのplunkerを投稿することができればそれは良いでしょう。

0

this Plunk(これは私のものではありません)を見れば、ユーザーはacopyを作成してAJAXデータと同期させておく必要があることがわかります。

我々はライン18コメントアウトした場合:オンラインの例のように

$scope.displayedCollection = [].concat($scope.rowCollection); 

を、テーブルが空になります。

結論:Webサイトのドキュメント

スマートテーブルは、最初にあなたの表示コレクション

そして、ウェブサイト上で奇妙に、(作業)例の安全なコピーを作成すると言うのは間違っています。 ..働くべきではない(?)

1

何もコピーする必要はありません。属性st-tableで設定するものは、単に行リピータで使用する可能性のあるテンプレート(つまりスコープ内の変数)のプレースホルダです。どこにでも宣言する必要はなく、スマートテーブルはアイテムを割り当てますこの変数に表示されるので、テンプレートを更新することができます。

あなたのソース(つまり、あなたのデータ)はst-safe-src属性にバインドするコレクションでなければなりません。バインドされたコレクションが変更されるたびに、スマートテーブルはローカルコピーを更新し、最新および実際のデータに基づいてフィルタ/並べ替え/スライス操作を実行できます。

ただし、データを変更する予定がない(または到着がajaxフェッチのように遅延しない)場合、内部コピーはまずスコープ内の変数にバインドされたコレクションに基づいていますst-table属性によって設計されています。 この場合、値は消去され、表示されたコレクションに置き換えられ、テンプレートが更新されます。幸いにも、最初のコピーはスマートテーブルのプライベート変数として保持されます。

問題が発生した場合は、他の場所から発生している可能性があります。その場合は、実行中の例(角バージョンとスマートテーブルバージョン)を提供してください

+0

私のコードでコピーを行う場合は、私にはうまくいきます。私のコードは投稿するには大きすぎますが、http://plnkr.co/edit/s407ao?p=preview 18行目をコメントアウトして同じことを見ることができます – Mawg

+1

スマートテーブルと角度バージョンは、プランナーで使用していますかなり古い... – laurent

+0

それはそれを説明するかもしれない(+1)。私はPlunkを更新する時間を見つけようとします(しかし、私は家で最新バージョンで作業していますが、同じ状況があります)。 – Mawg

関連する問題