2015-09-28 71 views
2

我有一個指令,應該在控制器變量更改時打開文件選取器窗口。這裏是指令的片段:以編程方式觸發ngf-select

angular.module('settingsInternal') 
    .directive('triggerUpload', function ($timeout) { 
     return { 
     restrict: 'A', 
     link: function (scope, element) { 
      scope.$watch('mainCtrl.watchedVariable', function (variable) { 
      if (variable) { 
       $timeout(function() { 
       element.triggerHandler('click'); 
       }, 20); 
      } 
      }); 
     } 
     }; 
    }); 

我遇到的問題是,我不能觸發NGF選上的股利。當手動點擊div時,它可以很好地工作,watch函數可以正確調用element.triggerHandler('click')。我浪費了幾個小時試圖弄清爲什麼這不起作用,如果有人有類似的問題,請幫我弄清楚問題出在哪裏。

P.s.不要注意變量名稱,它們用於示範目的。

+0

您可以將另一個變量添加到您的'ngIf'語句中,例如,而不是'ng-if =「myConditional」',你可以把'ng-if =「forceOpen || myConditional」',然後從你的控制器中切換'forceOpen' –

+0

不知道'ngf-select'是什麼。可能嘗試使用本地點擊...'element [0] .click()' – charlietfl

回答

0

問題不在於angular的ngf-select,而是在指令使用的輸入[type = file]中。輸入[type = file]必須由用戶自定義的事件初始化,所以如果你想用函數打開文件上傳窗口,你必須從用戶創建的事件中調用該函數。 我希望這可以幫助遇到類似問題的人。