2017-09-13 2 views
1

これについて読んだあと、ajaxを通して読み込まれたhtmlは私の角型アプリケーションにバインドされていないことを理解しています。私は1.000ものを試しましたが、角度を理解するために 'customers-invoice.html'を得ることはできません。どんなアイデアも高く評価されます。あなたは、この場合にng-includeディレクティブを使用することができajax load()関数の後のAngularJSバインドスコープhtmlへ

<body ng-cloak ng-app="myApp"> 
    <main id="main"> 
     <div ng-controller='Ctrl'> 
      <a ng-click="openInvoice(data.invoiceRef)" class="btn">View</a> 
     </div> 
    </div> 
</body> 


var app = angular.module('myApp', []); 
app.controller('Ctrl', function($scope, $compile) { 
    $scope.invoice = {} 
    $scope.openInvoice = function(ref) { 
     $scope.invoice.ref = ref; 
     var html = $('#main'); 
     html.load('customers-invoice.html') 
     $compile(html)($scope);   
    } 
} 

答えて

1

、それはあなたのための準備ができてコンパイルDOMバインディングとDOMを指定したことで、負荷のhtmlを行います。あなたはCtrlコントローラのバインディングを取得したいので、しかし、あなたはDOMそれCtrlコントローラ内部でdiv

<body ng-cloak ng-app="myApp"> 
    <main id="main"> 
     <div ng-controller='Ctrl'> 
      <a ng-click="openInvoice(data.invoiceRef)" class="btn">View</a> 
      <div ng-include="templateUrl"></div> 
     </div> 

    </div> 
</body> 

コード

$scope.openInvoice = function(ref) { 
    $scope.invoice.ref = ref; 
    $scope.templateUrl = 'customers-invoice.html';  
} 
+0

私は最終的に角度の独自の方法を使用しているので、この解決方法を選択しました。おかげで – ClaraG

1

はあなたがHTMLをロードするために$templateCacheサービスを使用できることを配置する必要がありますテンプレートが既にキャッシュにロードされているため、ファイルをコントローラに追加する必要があります。

var app = angular.module('myApp', []); 
app.controller('Ctrl', function($scope, $compile, $templateRequest, $sce) { 
    $scope.invoice = {} 
    $scope.openInvoice = function(ref) { 
     var templateUrl = $sce.getTrustedResourceUrl('customers-invoice.html'); 

     $templateRequest(templateUrl).then(function(template) { 
      $compile($("#main").html(template).contents())($scope); 
     }); 
    } 
}) 
+0

おかげで、まだ変更されたスコープをレンダリングしない – ClaraG

+0

jqueryのlibを追加することを確認してください。 https://plnkr.co/edit/bpBXDi7PC7gYBOgz3h0Y?p=preview –

+0

はい!ありがとう – ClaraG

0

Iveは最終的に問題を解決し、それに応じて解決しました。 Angularの知識の外でコードを実行しているので、挿入されたhtmlをコンパイルしてAngularを表示し、手動で$ scope。$ digest()を呼び出してマークアップを更新する必要があります。

だから、これは単なるトリックん:

$コンパイル($スコープ);($( '#のidWhereIloadedContentを')の内容()。)

$ scope。$ digest();