2013-07-15 7 views
5

私はいくつかの配列とデータを保持するAngularJSのものを持っています。ユーザーがファイルをアップロードすると、そのファイルは解析され、異なる配列を持つスコープに保存されます。しかし、このすべてとファイルがスコープ内に保持された後、innerHTMLを更新しようとしましたが、AngularJSコードは機能しません。私はng-repeatを使って配列に基づいてテーブルを作成しますが、それは{{column}}のようなコンテンツを持つ単一のセルのままです。AngularJS with innerHTMLを使用

私のindex.htmlには、私は私のindex.htmlファイルの重要な部分が含まれ、このような app.directive(...

として何かをするときappmoduleなどは、未定義であることを言うので、私はディレクティブとテンプレートを使用して極端な難しさを持っていた

<html ng-app> 
... //once a file is uploaded, total.js is called; 
//this was so the app didn't try to run before a file was uploaded 
<div id="someStuff">This will become a table once a file is uploaded</div> 

これは私の範囲はtotal.jsに設定されている方法の簡単な例です:

function sheet($rootScope, $parse){ 
    $rootScope.stuff = text; 
//text is a variable that contains the file's contents as a string 
}; 

document.getElementById('someStuff').innerHTML="<div ng-controller='sheet'>{{stuff}}</div>"; 

HTMLは変更されますが、ファイルの内容を印刷する代わりに、{{stuff}}のみが出力されます。 innerHTMLにAngularJSが含まれていることを理解してもらうには、どうすればよいでしょうか?部分的に、あるいは指示文を使わないでください。

編集1: 私は$ compileを使用しようとしましたが、未定義とマークされています。私はthisを見てコンパイルの問題を見つけましたが、私はrtcherryの構文を理解していません。

編集2: が、私はまだ$を受け取り、私はそうのようにそれが含まれている場合、未定義のエラーをコンパイル:

function sheet($rootScope, $parse, $compile){...}; 
document.getElementById('someStuff').innerHTML=$compile("<div ng-controller='sheet'> 
{{stuff}}</div>")(scope); 

編集3: itcouldevenbeaboatさんのコメントは、私は多分表示する必要がありますことを決めた、非常に助けにならないでしたが、あなたは私がそれをしようとした方法を指導します。

私はシート関数の下で、このコードが含まれていました。

innerHTMLのは <div ng-controller='sheet'>{{stuff}}</div>が含まれており、私はこれで <div spreadsheet></div>

を含めましたindex.htmlに、私はエラーを受け取りませんが、テキストはありません

var app = angular.module('App', []); 
app.directive('spreadsheeet', function($compile){ 
    return{ 
     templateUrl: innerHTML.html 
    } 
}); 

表示されず、{{stuff}}またはファイルの内容として表示されません。 templateUrlの代わりにtemplate: "<h2>Hello!</h2>"を入力するなどの単純な作業を行っても、Hello!を印刷することはできません。それは私

document.getElementById('someStuff').innerHTML = "<div ng-controller='sheet'>{{stuff}}</div>"; 
$compile(document.getElementById('someStuff'))($scope); 
+3

のinnerHTML = $コンパイル( "

{{stuff}}
")(スコープ) –

+0

あなたはINJことができます。このような他の角度サービス/ツールと同様にコンパイルします。 $ scopeや$ rootScopeを使いたいのとちょうど同じ方法です。 – alfrescian

+0

私はまだエラーが発生します。私の最新の編集を見てください。 – user2494584

答えて

4

:コントローラで

は依存関係としてコントローラで$ドキュメントを注入することを忘れないでください、

App.controller('indiaController', function ($scope, $document,$filter, $location) { 

    var text_element = angular.element($document[0].querySelector('#delhi'); 
    text_element.html('your dynamic html placed here'); 
} 
0

簡単な解決策(それは100%に動作します)のために働く