【问题标题】:How to select all fields including id and name value in select box using Angular JS如何使用Angular JS在选择框中选择所有字段,包括id和name值
【发布时间】:2017-04-21 06:51:51
【问题描述】:

我有选择框。

<select ng-model="sub_class_name" class="form-control"> 
<option ng-repeat="x in myData" value="{{x}}">{{x.sub_class_name}}</option>
</select>

像这样将值传递给控制器​​:

$scope.alertdata = function() {
var parameter = {
            "first_name": $scope.first_name,
            "middle_name": $scope.middle_name, 
            "subclass": [$scope.sub_class_name]
        }
}

打印参数后

alert(JSON.stringify(parameter));

得到字符串化的 JSON 输出,即,

{"first_name":"Prashanth","middle_name":"H","last_name":"Rotti",
"subclass":["{\"sub_class_id\":3,\"sub_class_name\":\"Dependent \"}"]}

我不想要斜线["{\"sub_class_id\":3,\"sub_class_name\":\"Dependent \"}"]

I want JSON output like this.
{"first_name":"Prashanth","middle_name":"H","last_name":"Rotti",
"subclass":[{"sub_class_id":"3","sub_class_name":"Dependent"}] }

【问题讨论】:

  • 你试过使用 JSON.parse "subclass": [JSON.parse($scope.sub_class_name)]
  • 使用ng-options 代替以选择整个对象。现在您正在选择一个字符串选项的值。

标签: angularjs arrays json


【解决方案1】:

添加我的评论作为答案,因为无法在评论中正确格式化数据: **更新 ** 由于预期的数据类型是 JSON 格式的字符串,所以可以这样初始化

$scope.sub_class_name = "{}" // Or $scope.sub_class_name ="[]"; based on data type it may be
$scope.alertdata = function() {
var parameter = {
            "first_name": $scope.first_name,
            "middle_name": $scope.middle_name, 
            "subclass": [JSON.parse($scope.sub_class_name)]
        }
}

alert(JSON.stringify(parameter));

如果您遇到任何问题,请告诉我。

【讨论】:

  • 嗨,我有多个选择字段,我必须解析它们,但出现错误。 SyntaxError: 位置 0 处 JSON 中的意外标记 u
  • 如果我选择所有选择选项,那么它正在工作,否则它会引发异常..
  • 这意味着.. $scope.sub_class_name 的值并不总是 JSON 类型。您能否在抛出错误时显示 $scope.sub_class 的值。
  • 如果您收到错误:SyntaxError: Unexpected token u in JSON at position 0,这意味着在将变量传递给 JSON 之前,在这种情况下 $scope.sub_class 的值未定义(u 表示未定义) .parse,你应该检查它不应该是未定义的。您可以将 $scope.sub_class_name 初始化为对象 ot 数组。
  • 等等..出了点问题..我正在上面修复我的答案
【解决方案2】:

使用JSON.parse()

它会成功的。

【讨论】:

  • JSON.parse 参数我必须使用 $scope.sub_class_name.?
  • @PrashanthHarish 是的,正是:)
猜你喜欢
  • 2016-07-03
  • 2021-09-20
  • 2020-12-06
  • 1970-01-01
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
  • 2014-05-02
  • 1970-01-01
相关资源
最近更新 更多