2016-08-24 65 views
0

我想我的設置按鈕的啓用狀態啓用一個文件選擇上傳允許上載文件後,按鈕不起作用第一次

的問題是我之前選擇文件後兩次按鈕啓用

<form name="importForm"> 
    <div ng-if="vm.results == null"> 

     <div> 
      <label>File*</label> 

      <input id = "uploadFile" ng-model="vm.fileImporter.file" 
        onchange="angular.element(this).scope().file_changed(this)" 
        required 
        type="file" accept="*" /> 
     </div> 

     <div class="footer"> 
      <button ng-disabled="importForm.$invalid" ng-click="vm.importFile()">Import</button> 
     </div> 
    </div> 
</form> 


    $scope.file_changed = function (element) { 
     $scope.$apply(function (scope) { 
      var file = element.files[0]; 
      var reader = new FileReader(); 
      reader.readAsDataURL(file); 
      reader.onload = function (evt) { 
       vm.fileImporter.file = evt.target.result; 
      } 
     }); 
    }; 

回答

0

的問題是這一行:

onchange="angular.element(this).scope().file_changed(this)" 

通過這樣做,你正在使用的輸入範圍,而不是你的控制範圍(因此,你是不是指喲你的功能$scope.file_changed)。

試着改變你的線路是這樣的(NG-變化,而不是平變化的通知使用):

ng-change="file_changed(this)" 

應該解決您的問題。

+0

嗨Luxor001,當我這樣做時,我得到一個錯誤file_changed沒有定義我是否需要改變vm中方法的簽名? – MicroMan

+0

我不好,你應該用ng-change代替onchange,我沒有注意到。 ng-change是一個角度指令(你應該使用它),onchange是純粹的javascript(這很糟糕:那麼使用角度是什麼?)看到我編輯的答案的詳細信息 – Luxor001

+0

仍然沒有工作的第一次.. 。 – MicroMan

相關問題