1

私はこれを正しくやっていますか?私のスコープには、コントローラーから割り当てられたjsonがありました。angularForEachを使用して繰り返し処理しています。

td データを日付にフォーマットできるようにしたいと思います。これは簡単な例です。理想的には、行の値に日付フィルターを使用したいのですが、構文が正しくないようです。[編集]「補間値」を使用する必要があると思います[/編集]

ほとんどの例は中括弧で動作し、実際のビューにあるようです。誰かアドバイスしてくれませんか?

.directive('betterTable', function () {
    return {
        restrict: 'E',        
        link: function ($scope, element, attrs) {

            var html = '<table border="1" width="100%">';
            html += '<tr>';
            angular.forEach($scope.result, function (row, index) {
                html += '<td>'; 
                html += row;
                html += '</td>';
            });
            html += '</tr></table>';

        }
   } 
 });
4

2 に答える 2

1

次のようなことができます。

.directive('betterTable', function () {
  return {
    restrict: 'E',
    template: '<table border="1" width="100%">' +
      '<tr>' +
        '<td ng-repeat="row in result">{{row|date:"short"}}</td>' +
      '</tr>' +
    '</table>',
    link: function ($scope, element, attrs) {
      // Nothing to see here...
    }
  } 
});

正直なところ、これにはディレクティブは必要ありません。

本当にリンク関数でループを実行したい場合 (私はお勧めしません)、これで始められるはずです:

.directive('betterTable', ['$compile', function ($compile) {
  return {
    restrict: 'E',        
    link: function ($scope, element, attrs) {

        var html = '<table border="1" width="100%">';
        html += '<tr>';
        angular.forEach($scope.result, function (row, index) {
          html += '<td>';
          html += $compile("{{row|date:'short'}}")($scope);
          html += '</td>';
          // This could also be expressed on one line as:
          // html += $compile("<td>{{row|date:'short'}}</td>")($scope);
        });
        html += '</tr></table>';

    }
  } 
}]);

編集:明確にするために、あなたが投稿したものに基づいて、ディレクティブを作成する理由はわかりません。これをビューに入れることができます:

<table border="1" width="100%">
  <tr>
    <td ng-repeat="row in result">{{row|date:"short"}}</td>
  </tr>
</table>
于 2013-06-06T23:03:49.223 に答える