javascript - 将 TypeScript 文件内的 "function"调用为 HTML

标签 javascript html angularjs angular typescript

我对 HTML、TypeScript 和 JavaScript 还很陌生。我目前正在尝试从选定的文件夹获取相对路径。我正在使用 this 中的代码堆栈帖子。我已经添加了用于选择文件夹的 HTML,但我在使用 JavaScript 部分时遇到了问题。这是一个 Angular 2 应用程序,所以我有一个 TypeScript 文件。我在下面添加了我的代码以及后面的 JSFiddle 链接。

这是我的 HTML:

<div class="panel panel-primary" style="border-color: #464646;">
    <div class="panel-heading" style="border-color: #BBBBBB; height: 35px; padding-top: 3px;">
        <div style="float: left; margin-top: 5px;">Select directory</div>
    </div>
    <div class="panel-body">
        <!--Directory Selection Button-->
        <div class="row">
            <input type="file" id="FileUpload" onchange="selectFolder(event)" webkitdirectory mozdirectory msdirectory odirectory directory multiple />
        </div>
    </div>
</div>

这是我的 TypeScript 文件:

import {Component} from '@angular/core';
import {HttpModule} from "@angular/http";

@Component({
    selector: 'home',
    templateUrl: './SDI/templates/home.html',
})
export class HomeComponent {

    constructor(){ }

    selectFolder(e: any) {
        console.log('selectFolder entered.'); 

        var theFiles = e.target.files;
        var relativePath = theFiles[0].webkitRelativePath;
        var folder = relativePath.split("/");
        alert(folder[0]);
    }
}

JSFiddle 链接:https://jsfiddle.net/roka545/9ufc5nsg/

但是,当我运行应用程序并选择一个文件夹时,我的控制台告诉我

selectFolder is not defined.

我究竟做错了什么?

最佳答案

您应该使用 (change) 而不是 onchange 属性。基本上,onchange 事件在全局 javascript scope(上下文)中查找函数,而当您想调用与模板关联的 Component 方法时,您必须遵循(eventName)(括号中的事件名称)约定来调用组件function

此外,在将参数传递给函数时,请使用 $event 而不是 event

(change)="selectFolder($event)"

关于javascript - 将 TypeScript 文件内的 "function"调用为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39983919/

相关文章:

jquery - JS 弹出元素使周围站点变暗

javascript - 如何使用 jquery 遍历所有 json 项?

java - Tomcat更改javascript文件无需重启服务器

Javascript 预览框用 <br> 替换\n

html - SVG 笔划宽度在边界矩形内扩展

javascript - HTML5 游戏 (Canvas) - UI 技术?

angularjs - ngAnimate 不在 ng-repeat 上添加动画类

ajax - Angular.js - 来自 AJAX 请求的数据作为 ng-repeat 集合

javascript - bootstrap-datepicker 在选择日期时不会更新 AngularJS 模型

javascript - Javascript 中的经典字数统计算法