4

FlowJSと EmberJSを統合しようとしています。サーバーへのデータのアップロードに成功したので、その部分は得意です。

フロー オブジェクト データを emberJS コンポーネントにバインドして、ハンドルバーを介してデータを表示しようとすると失敗します。何らかの理由でデータバインディングが機能していません。

コードの例を次に示します。

HTML

<script type="text/x-handlebars" data-template-name="index">
    {{flow-uploader}}
</script>

<script type="text/x-handlebars" id="components/flow-uploader">
    <div class="drop"></div>
    <!-- file list -->
    {{#each file in flow.files}}
        <p>File name: {{file.name}}</p>
    {{/each}}
</script>      

JS

App = Ember.Application.create({
    rootElement: '#main'
});


App.FlowUploaderComponent = Ember.Component.extend({

        flow: function(){
            return new Flow({
                target: 'http://google.com',
                testChunks: false
            });
        }.property(),

        initDropZone: function(){

            var flow = this.get('flow');
            var drop = this.$('.drop')[0];
            var $this = this;

            flow.assignDrop(drop);

            /*flow.on('fileAdded', function(file, flow){

            });
            flow.on('filesAdded', function(files){
            });
            flow.on('fileSuccess', function(file,message){
                console.log('file success');
            });
            flow.on('fileError', function(flow, message, chunk){
                console.log('file error');
            });*/
            flow.on('filesSubmitted', function(){
                console.log($this.get('flow').files);
                //flow.upload();
            });

            /*flow.on('complete', function(event, flow){
                console.log('completed');
            });

            flow.on('uploadStart', function(event, flow){
                console.log('uploading..');
            });
            flow.on('fileProgress', function(flow, file){

            });*/

        }.on('didInsertElement')

    });

例はhttp://jsfiddle.net/sisir/qLuobq48/2/でライブで見ることができます

基本的にここで行っているのは、フロー オブジェクトをコンポーネント プロパティとして保存することです。filesフローオブジェクトのプロパティは、アップロードするファイルの配列です。複数のファイルをドラッグ アンド ドロップまたは選択してアップロードすると、files配列が更​​新されます。コンソールで確認できます。ロギング コードは、filesSubmittedイベントを介して追加されます。

handlebars 式から、各ファイルはファイル キューから反復処理されます。最初は空ですが、後で入力されると、html に表示されません。何らかの理由でデータ バインディングが機能していません。

4

2 に答える 2

0

JSFiddle の問題は、text/plainファイルを JavaScript として参照したことです。ここで尋ねたように、すべてのファイルが JSFiddle で使用できるわけではありません。

つまり、このエラー

Uncaught ReferenceError: Flow is not defined

このエラーの結果です

Refused to execute script from 'https://raw.githubusercontent.com/flowjs/flow.js/master/dist/flow.min.js' because its MIME type ('text/plain') is not executable, and strict MIME type checking is enabled.

を使用して修正できます

https://rawgithub.com

または MaxCDN バージョン

http://rawgit.com/

ブランチ ファイル URl の代わりに

すべてのステートメントを含む新しい JSFiddleを見てconsole.log()ください。、およびコンソールのログはfiles added、適切なファイルを使用すると、コード内のすべてが正常に機能することを示しています。PROTip: コンソールのエラーを常に確認してください。file addedsubmitted

于 2015-01-17T18:18:23.243 に答える