2016-11-08 12 views
1

ファイル型の入力ファイルにはAngularディレクティブを使用しますが、入力変数は定義されていません。 documentation jqLit​​eの検索で述べたように角度指示に要素が見つかりませんか?

angular.directive("ngUpload", function() { 
    return { 
     restrict : "A", 
     template : '<input id="fileInput" name="file" type="file" class="ng-hide" multiple><md-button id="uploadButton" class="md-raised md-primary"> Choose Files </md-button>', 
     link : function (scope, element, attrs) { 
      var input = element.find('#fileInput'); 
      var button = element.find('#uploadButton'); 

      if (input.length && button.length) { 
       button.click((e) => input.click()); 
      } 
     }, 
    }; 
}); 

答えて

3

は、タグ名で検索する限定されています。

idで要素を取得するjQuery(angular.jsより前)を含めることも、入力の保持を取得する別の方法を使用することもできます。

テンプレートで唯一の入力要素がありますので、あなたも、IDセレクタを必要としないので、これは動作するはずです:

var input = element.find('input'); 

また、directiveはモジュール上ではなく、グローバルな角度オブジェクトで宣言されています。

最後に、自分のディレクティブの末尾にng-というプレフィックスを付けないでください。これは(将来の)角コアディレクティブと衝突する可能性があるためです。

Aより完全な例:

angular.module('myModule').directive("customUpload", function() { 
    return { 
     restrict : "A", 
     template : '<input id="fileInput" name="file" type="file" class="ng-hide" multiple><md-button id="uploadButton" class="md-raised md-primary"> Choose Files </md-button>', 
     link : function (scope, element, attrs) { 
      var input = element.find('input'); 
      var button = element.find('md-button'); 

      if (input.length && button.length) { 
       button.click((e) => input.click()); 
      } 
     }, 
    }; 
}); 
+0

おかげで、私は追加忘れる ".module( 'のmymodule')" –

関連する問題