【问题标题】:Can't access elements of an array无法访问数组的元素
【发布时间】:2016-08-08 22:30:38
【问题描述】:

我对 Angular 和 JavaScript 还是很陌生,如果这是一个明显的错误,我深表歉意。

我有这段代码选择 2 个文本文件,然后将它们放入一个数组中。

$scope.textArray = [];
$scope.textUpload = function(event){
    var files = event.target.files;

        for (var i = 0; i < files.length; i++) {
            var file = files[i];
                var reader = new FileReader();
                reader.onload = $scope.textIsLoaded; 
                reader.readAsText(file);
        };
};
$scope.textIsLoaded = function(e){
    $scope.$apply(function() {
        $scope.textArray.push(e.target.result);
    });

这将显示一个数组,如下所示:

["160 591 114 229","186 699 132 272"]

当我通过 HTML 访问数组时,数组的两个元素都会显示,我可以使用拆分、长度等。但是如果我通过脚本访问数组,我只能访问和更改第一个元素。如果我尝试通过textArray[1] 访问第二个元素,则不会显示任何内容,如果我添加textArray[1].split(' '),则表示它无法读取未定义的属性。

我尝试在脚本中使用 join 和 slice 来更改数组或创建新数组,但它们也无法访问元素。对此问题的任何帮助将不胜感激。

编辑: 当我使用

$scope.arrayOne = $scope.textArray[0].split(' ')

它工作正常并输出正确的东西,但是当我使用时

$scope.arrayOne = $scope.textArray[1].split(' ')

它不输出任何东西。

Edit2:发现另一个具有相同问题的问题并通过添加来解决它

$scope.$watch('textArray', function(){

前面

$scope.arrayOne = $scope.textArray[1].split(' ');

【问题讨论】:

    标签: javascript html arrays angularjs


    【解决方案1】:

    你应该尝试拆分

    $scope.textArray[1].split(' ');
    

    应该可以。确保将$scope 作为参数传递给尝试拆分textArray 的方法。

    这是一个工作示例:

     <div ng-controller="ResultSplit">
       {{result}}
     </div>
    

    还有 javascript:

     function ResultSplit($scope) {
       $scope.textArray = ["1223 2233", "3344 555 6666"];
       $scope.result = $scope.textArray[1].split(' ');
     }
    

    【讨论】:

    • 我试过了,但它只是说Cannot read property 'split' of undefined。
    • 我试过这样 $scope.arrayOne = $scope.textArray[1].split(' ');
    • 你能告诉我你尝试这个的方法吗?如果您在编写此行的方法中不传递 $scope,它将无法正常工作。
    • 我一直在这里使用它:$scope.textIsLoaded = function(e){ 但我也尝试在主控制器中使用它,当我将它放入控制器时,它导致我的所有代码崩溃。
    • @Matt 您可以尝试上述方法并检查是否有效,它在 jsfiddle 中有效。 jsfiddle.net/5DMjt/6092/#&togetherjs=7Boye5DV8t
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 2019-04-20
    • 2019-08-11
    • 2020-08-12
    • 1970-01-01
    • 2016-01-04
    相关资源
    最近更新 更多