2017-08-08 8 views
0

私はanglejsの中のあるディレクティブに1つのディレクティブデータを渡すために非常に多くの答えを見ましたが、何も私のために働いていません。

私は、フォルダをドラッグアンドドロップしてディレクトリの内容を読み込む指示(readDirectoryContents)を持っています。今は別のディレクティブ(buildTree)を使って、このディレクトリの内容をツリー構造で表示したいと思います。

まず私はディレクティブ

<readDirectoryContents> 

を作成し、このディレクティブから$ scope.filesを持って、今私は$ scope.filesを使用したい

<buildTree> 

た他のディレクティブを作成し、ここでの問題は両方ともです。

<readDirectoryContents> and <buildTree> 

同時に読み込んで$ scope.filesを[] iにしますnは

<buildTree> to wait executing until we get $scope.files from <readDirectoryContents>. I am using console.log($scope.files); in my 

<buildTree> directive to display the "files" but it is always showing [] as <readDirectoryContents> and <buildTree> are getting executed at the same time. 

にする方法

<buildTree> directive. 

私はUIに$ scope.filesを表示する方法についての質問ではないのですが、私は

<buildTree> wait until the <readDirectoryContents> directive execution is done.(just to get $scope.files from first directive to next). 
の実行を作成する方法についての質問だということを覚えておいてください

これは、私たちが別の約束から結果を得るまで待つことを約束するものと似ていますが、ここで私は指示の文脈で尋ねています。 1つのディレクティブ実行を他のディレクティブからデータを取得するまで待機させる方法。

ありがとうございます。私は自分のコードでangularjs 1を使用しています。私の質問はたぶん、あなたはあなたのbuildTreeディレクティブの「時計」を実装することができ

<buildTree> directive. 
+0

を、あなたは、このような[これ](https://github.com/angular-として、すでに存在するファイルディレクトリのプラグインを使用して考えがありますui-tree/angular-ui-tree)? –

+0

いいえ私はhttps://www.html5rocks.com/jp/tutorials/file/filesystem/ –

+0

を使用しました。あなたの質問を更新して、皆さんがここで実際に何をしているのかを皆に知らせるべきかもしれません。 –

答えて

1

に[]が表示されないためにはconsole.log($ scope.files)を作成する方法です。

が、この君でbuildTreeディレクティブに行う試してみてください。

//You need to receive files in your scope, I am considering that your 
//files is shared between your directives. 
$scope.$watch('files', function (newValue, oldValue) { 
    //The watch will execute everytime your files variable changes 
    if(newValue === oldValue) { 
     return; 
    } 

    //here you can set files to an internal variable of you directive 
    // or call a function to build your tree again 

    $scope.intFiles = newValue; 
}); 

その後、あなたは$ scope.intFilesを使用してツリーを構築することができます。 readDirectoryContentsでファイル変数が更新されるたびに、buildTreeディレクティブ(論理的にはあなたの時計)に反映される必要があります。

これは解決策の1つであり、問​​題を解決する必要があることに注意してください。

パフォーマンスの問題を避けるため、コード内の多くの時計に注意してください。詳細については

、あなたは時計についての完全なドキュメントを参照できます。$rootScope.Scope

関連する問題