1

コントローラーから、stuff という名前の属性から JSON 配列を取得するディレクティブがあります。その部分はうまく機能します。私が今やろうとしているのは、その配列の長さを使用するリンク関数を作成し、TR 要素と TD 要素の両方を繰り返して適切にフォーマットされたテーブルを作成できるようにすることです。スタックでこれの良い例を見つけましたが、私が抱えている問題は、リンク関数のスタッフ属性から何も取得できないことです。私はただ未定義になります。

コントローラ:

function itemControl($http, $scope) {
  $http.get('doc/products.json').success(function (prodata) {
    $scope.data = prodata;
  });
}

指令

app.directive("showcase", function () {
  return {
    restrict: "A",
    template: '<table>' + 
               '<colgroup span="2"></colgroup>' + 
                '<tr ng-repeat="items in stuff">' + 
                '<td>' + 
                 '<a  ng-href="{{items.SRC}}" Title="{{items.name}}" colorbox>' + 
                 '<img ng-src="{{items.SRC}}"></a>' + 
                '</td></tr></table>',
    scope: {
      stuff: "="
    },
    link: function (scope) {
      alert(scope.stuff);
    }

  };
});

HTML

<div ng-controller="itemControl">
  <div showcase stuff="data"></div>
</div>
4

1 に答える 1

2

データは外部の JSON ファイルから読み込まれるため、「showcase」インスタンスが作成された時点では使用できません。この時間をキャッチするには、scope.$watch を使用できます。

http://docs.angularjs.org/api/ng.$ro​​otScope.Scope#$watch

これを見て:

http://www.plnkr.co/edit/YdYVEWbmcUZZhUBs01pI

于 2013-04-19T00:51:35.363 に答える