1

テンプレートの本文をレンダリングするためにルートを使用しています。以下を参照してください。テンプレートが読み込まれ、この時点で問題はありません。

ユーザーがリンクのレンダリングされたテンプレート (/templates/my-details) 内をクリックすると、カラーボックス ポップアップがトリガーされ、ルートで利用可能な my_object データが取り込まれた別の角度テンプレートを使用したいと考えています。

クリックでトリガーされるコードを処理し、テンプレートを取得してコンパイルするカスタム ディレクティブを作成しました。次に、その内容を colorbox に渡して使用します。

私が抱えている問題は、compiled_template が正しくレンダリングされていないことです。$compile(template)(scope) に渡されたスコープには、使用するテンプレート /templates/my-buy のオブジェクト my_object が含まれていると想定していましたが、コンパイルされたテンプレートは式やディレクティブなどを無視するため、そうではないようです。 . my_object を参照します。

これは、ルーティングを行う前に機能し、ng-controller を定義するためのディレクティブ要素を使用して、はるかに単純なページを作成していました。私が渡しているスコープは、私が使用しているルート プロバイダーのスコープではないとしか思えません。"/"。

my_app.config(function($routeProvider) {
        $routeProvider.
          when('/', {
            templateUrl: '/templates/my-details',
            controller: 'MyShowCtrl',
            resolve: {
                my_object: function(myService, settingsService){
                    return dealService.getDeal(settingsService.init().my_guid);
                }
            }   
          }).
          otherwise({
            //redirectTo: '/'
          });
    });

my_app.directive('colorbox', function($compile, $templateCache,$rootScope){
      return {
        link: function(scope, element, attrs){
          element.click('bind', function(){

            // get template from cache process and apply to colorbox
            var template = $templateCache.get('/templates/my-buy');
            var compiled_template = $compile(template)(scope);      

            $.colorbox({
              html: compiled_template,
              width: "600px",
              height: "600px"
            });

          });
        }
      };
    });   
4

1 に答える 1