0

私はさまざまなコンポーネントに UI をロードする「スケルトン」に取り組んでいます。最初にテンプレートをロードするというディレクティブがあります (このテンプレートは不透明度が低く、モック テーブルのように見えます)。必要なデータを取得したら、ディレクティブhttp.get()を変更したいと思います。templateUrl以下は私がこれまでに試したことです。

function registers($log, $state, $templateCache, currentCountData, storeFactory) {
    var directive = {
        restrict: 'A',
        scope: true,
        templateUrl: '/app/shared/tableMock/tableMock.html',
        link: link
    };

    return directive;

    function link(scope, element, attrs) {
        storeFactory.getRegisters().then(function (data) {
            scope.registers = data.registers;
            $templateCache.put('/app/dashboard/registers/registers.html');
        });
    }
}

正しい軌道に乗っているかどうかはわかりません。ステップスルーして、storeFactoryから正しいデータが返されるのを確認できfactoryます。templateUrlディレクティブの を変更するにはどうすればよいですか?

4

2 に答える 2

1

このような場合、私は通常、ディレクティブ テンプレートで次のようなことを行います。

<div ng-switch="viewState">
  <div ng-switch-when="gotRegisters">
   Content for when you get the registers
  </div>
  <div ng-switch-default>
   For when you don't have the registers
  </div>
</div>

このようにして、変数を変更してコンテンツを表示するだけでie scope.viewState = 'gotRegisters';、レジスターを既にダウンロードした後にダウンロードされるのを待つ必要がなくなります。

于 2015-08-28T01:07:13.143 に答える
0

この質問の助けを借りて、私はこれを思いつくことができました

function link(scope, element, attrs) {                        
    storeFactory.getRegisters().then(function (data) {
        scope.registers = data.registers;
        $http.get('/app/dashboard/registers/registers.html', { cache: $templateCache }).success(function (tplContent) {
            element.replaceWith($compile(tplContent)(scope));
        });
    });
}

tplContentの応答に相関し$http.get()ます。registers.htmlファイル内の htmlです。elementディレクティブ自体を表します。

于 2015-08-28T00:56:17.720 に答える