发送数组 - 无法读取属性' map'未定义的

时间:2016-12-15 13:51:53

标签: javascript angularjs arrays

帽子是我如何拥有多个值,我将继续发送以继续像客户可以创建用户。

我在此处找到了它:https://stackoverflow.com/a/14520103/7180653将对象数组作为输入数据

我基于他的代码,这就是我应该只拥有真实的知识值。

当我看着我的按钮时。所以我得到错误

  

数组[0]

     

TypeError:无法读取属性' map'未定义的

html - 查看:

<ul style="list-style-type:none;">
    <li class="col-md-4" ng-repeat="Value in ColorAddUppers">
        <img ng-src="{{Value.Image}}" class="img-responsive img-rounded mb-lg" />
        <p class="label label-lg label-primary full-width">
            <input type="checkbox"
                    ng-model="Value.selected"
                    name="selectedColorUppers[]"
                    value="{{Value.IDColor}}" />
            {{Value.Text}}
        </p>
    </li>
</ul>

CreateUser.js

var url = "/JsonClass/ColorAddToUppers";
$http.get(url).success(function (response) {
    $scope.ColorAddUppers = response;
});


//Overdel
$scope.NextLvlThree = function () {
    //Check Color Values

    $scope.selectionColorUppersView = [];
    $scope.selectedColorUppers = function selectedColorUppers() {
        return filterFilter($scope.ColorAddUppers, { selected: true });
    };
    $scope.$watch('fruits|filter:{selected:true}', function (nv) {
        $scope.selectionColorUppersView = nv.map(function (ColorNameUppersText) {
            return ColorNameUppersText.Text;
        });
    }, true);

    console.log($scope.selectionColorUppersView);
}

EIDT(更新)

enter image description here

当我看这张照片时,它似乎没有得到我的价值。

我在代码中使用了这个:

$scope.selectedTextValuesByWatch = [];

    $scope.$watchCollection('ColorAddUppers|filter:{selected:true}', function (nv, ov) {
        $scope.selectedTextValuesByWatch = nv.filter(function (value) {
            return value.selected;
        }).map(function (value) {
            return value.Text;
        });
    }, true);

    $scope.getSelectedTextValues = function () {
        return $scope.ColorAddUppers.filter(function (value) {
            return value.selected;
        }).map(function (value) {
            return value.Text;
        });
    }

    console.log($scope.selectedTextValuesByWatch);

    if($scope.selectedTextValuesByWatch.length >= 1)
    {
        console.log("check");
    }
    else
    {
        console.log("error");
    }

1 个答案:

答案 0 :(得分:0)

我不确定何时调用NextLvlThree()函数,但$watch的声明应该在控制器级别而不是在此函数内部以避免多次声明。

无论如何,有几种方法可以在列表中获取所选值:

在视图中使用动态过滤器,例如应将选择值显示为json:

 <pre>{ColorAddUppers|filter:{selected:true}|json}}</pre>

使用会更新所选列表的手表,该列表仅包含每个值的Text

$scope.$watchCollection('ColorAddUppers|filter:{selected:true}', function (nv, ov) {
   $scope.selectedTextValuesByWatch = nv.filter(function (value) {
      return value.selected;
   }).map(function(value) {
      return value.Text;
   });
}, true);

或者只使用与手表进行相同过滤的功能,但是当用户点击某个按钮时:

$scope.getSelectedTextValues = function() {
    return $scope.ColorAddUppers.filter(function(value) {
       return value.selected;
    }).map(function(value) {
       return value.Text;
    });
}

查看this plunker here中的所有3个操作。