函数未在Angularjs中定义ReferecenError onchange

时间:2016-03-05 16:31:27

标签: html angularjs typescript onchange

我遇到了onchange事件的文件输入问题。 这是我的代码:

Html:

 <input type="file" kendo-upload k-options="uploadOptions" id="fileInput" onchange="fileUploaded(event)"/>

Angularjs代码 - 使用Typescript。

$scope.fileUploaded = (event) => {
            console.log("Testing file upload");
            var reader = new FileReader();
            var target = event.target || event.srcElement;
            reader.onload = function(e) {
                $scope.$apply(function() {
                    $scope.readFile = reader.result;
                });
            };
            var file = target.files[0];
            reader.readAsText(file);
        };

我试图遵循这个并相应地改变,但仍然有问题。 Pass angularJS $index into onchange

我这样改变了。

<input type="file" kendo-upload k-options="uploadOptions" id="fileInput" onchange="angular.element(this).scope().fileUploaded(this)">

我收到了这个错误。 未捕获的TypeError:undefined不是函数。 平变化

当我尝试使用ng-change时,我有这个错误。

<div kendo-window="importFile" k-visible="false" k-modal="true" k-title="'Import File'"
         k-min-width="450" k-max-width="450"
         k-min-height="418" k-max-height="418">
        <form kendo-validator="validator" ng-submit="validate($event)">
                <li style="padding-bottom: 5px;">
                    <input type="file" kendo-upload k-options="uploadOptions" id="fileInput" ng-change="fileUploaded($event)"/>
                </li>
        </form>
    </div>

这在访问时会出错 $ scope.importFile.center(); “TypeError:无法读取未定义的属性'center'” 再次,如果我使用ng-click工作正常。

对此的任何帮助都非常感谢。

谢谢!

1 个答案:

答案 0 :(得分:2)

在这种情况下,您无法使用ngChange,因为ngChange始终需要ngModelngModel不能与输入类型文件一起使用。此外,您无法使用$scope直接访问绑定到onchange的功能。而是使用以下内容:

onchange="angular.element(this).scope().fileUploaded($event)"