0

現在、Knockout から Angular に切り替えています。私が現在抱えている主な問題は、元のテンプレートを Angular が認識できるものに転送することです。

具体的には、転送に問題があるコードの一部を次に示します。

<!-- ko template: { name: 'SquareTempl', data: Squares[5] } --><!-- /ko -->

Knockout では、これにより Squares[5] が SquareTempl にアタッチされるため、テンプレートがレンダリングされるときに、Squares[5] 内のメンバー (またはアタッチされるあらゆるデータ) を使用してレンダリングされます。

Squares[0]~Squares[11] についてもこのプロセスを繰り返す必要があります。ただし、番号順に繰り返し処理しないため、ng-repeat は使用できません。

理想的には、

<td class="Square" id="five" ng-include src="'SquareTempl.html'" ng-data="Squares[5]">

何か案は?

これは、ng-model を使用して試した失敗した試行の概要を説明するために作成した JSFiddle です。

http://jsfiddle.net/fZz3W/9/

4

1 に答える 1

2

2 つのこと: まず、自分で実装することで ng-data を利用できるようにすることができますYourApp.directive("ngData", function() {})。次に、HTML を別のファイルの一部にする必要がありますか? Angular で探しているものを実現する簡単な方法は、ng-repeat次のようなものです。

<td ng-repeat="item in Square">
    <div>{{item.name}}</div> 
</td>

配列が更新されると、Square追加の投稿が行われます。

変更した JSFiddle を確認してください: http://jsfiddle.net/TdWMF/1/

したがって、これは主に、より良い解決策を提供できるまで、あなたが望むものを達成するためのハックです:

混合順序を使用した2番目の更新ng-repeat: http://jsfiddle.net/TdWMF/3/

基本的:

<div ng-repeat="index in [4, 2, 0, 3, 1]">
   square index: {{index}}<br />
   square: {{Squares[index]}}
</div>

かなり醜く、理想的ではないことはわかっています。関数内で order array generate を実行してから、次のことを行うこともお勧めします。ng-repeat="index in displayOrder(Squares)"

于 2013-04-09T02:55:33.237 に答える