角度js中的GetElementById等效

时间:2016-07-12 11:27:28

标签: javascript angularjs

<div>
    <input id="txt"  type="text" placeholder="Choose File" />
    <input type="file" id="selectedFile" class="hidden" onchange="ChangeText(this, 'txt');" />
    <span>
        <button type="button" onclick="document.getElementById('selectedFile').click();">Browse</button>
    </span>
</div>

我只想要角度js中的点击事件。有谁能说出来?

我只想要角度js中的点击事件。 谁能说出来? 代码在评论中

3 个答案:

答案 0 :(得分:0)

这不是角度方式,DOM应该在代码中调用函数,而不是代码轮询DOM中的事件。

<script>
  $('#btn').click(function() {
    doTheThing();
  });
</script>
<button id="btn">Do the thing!</button>

<my-button  ng-click="{{ MyBtnCtrl.doTheThing() }}">Do the thing!</my-button>

带控制器

function MyButtonController() {
  this.doTheThing = function() {
    alert('I\'m doing the thing!')
  };
}

编辑: 因为我现在只看到你的代码,你展示的代码不是角度代码。如果您想使用角度,请查看以下链接:

我更喜欢使用codeschool来帮助您入门,因为它更具互动性并提供了一步一步的指导。

答案 1 :(得分:0)

<div>
    <input id="txt"  type="text" placeholder="Choose File" />
    <input type="file" id="selectedFile" class="hidden" onchange="ChangeText(this, 'txt');" />
    <span>
        <button type="button" onclick="click();">Browse</button>
    </span>
</div>

$scope.click = function() {
        document.getElementById('selectedFile').click()
};

答案 2 :(得分:0)

好的,在我可能没有完全阅读你的问题之前。现在我有了,我认为这就是你要找的东西:https://plnkr.co/edit/pfjU5B17qCzwHKoG4iTN?p=preview

.controller('Upload', ['$scope', function($scope) {
    this.input;

    this.browse = function() {
        this.input.click();
    };
}])
.directive('fileUpload', [function() {
    return {
        'restrict':'E',
        'controller':'Upload',
        'controllerAs':'upload',
        'templateUrl': './upload.html',
        'link':function($scope, $element, $attribute, upload) {
            upload.input = $element.find('input')[1];
        }
    };
}]);

在指令的link-function中,我将输入注入控制器。控制器只是将点击事件激发到节点中,从而调用文件浏览器。

编辑:我个人不会使用输入来显示文件,但会显示所有选定文件的更通用的列表,如果可能的话会预览。这样你只需要使用第一个输入:)

很抱歉没有更好地阅读您的问题,希望这有帮助。