【问题标题】:Angular get each tr data matching two td'sAngular 获取匹配两个 td 的每个 tr 数据
【发布时间】:2015-03-10 13:02:03
【问题描述】:

我有一个简单的数据表。来自两个不同服务的数据馈送,但是我需要匹配它们然后发送回服务器(在这种情况下它并不重要)。

例如(Business 可以匹配蓝色或红色 -- Home 可以匹配红色或蓝色)。我认为angular.forEach 可能的答案,但是,我是角度新手。

所需的输出 Json

{ // result of first tr
  "PickOptionBaseID": 1, // first td from pickoptions (Business)
  "PickOptionTargetID": 20 // second td from pickoptionsTwo (Red)
},
{ //result of second tr
  "PickOptionBaseID": 2, // first td pickoptions (Home)
  "PickOptionTargetID": 10 //sencond td from pickoptionsTwo (Blue)
}

Quick demo on fiddle

提前致谢

【问题讨论】:

  • 我不确定你想做什么。是否要将选择值发送回服务器?
  • 文本和选择的值到服务器,包括两个 tr。

标签: arrays json angularjs angularjs-scope angularjs-ng-repeat


【解决方案1】:

将第二个选项分配给第一个属性(也使用ng-options):

<select data-ng-model="p.optionTwo" ng-options="po.Text for po in pickoptionsTwo">
    <option value="">Choose</option>
</select>

然后构造请求数据:

$scope.send = function() {
  var data = [];

  angular.forEach($scope.pickoptions, function (option) {
      data.push({
          PickOptionBaseID: option.ID,
          PickOptionTargetID: (option.optionTwo && option.optionTwo.ID) || 0
      });
  });

  console.log(data);
};

http://jsfiddle.net/AXBut/141/

【讨论】:

  • 点击发送后出现错误“无法读取未定义的属性 'ID'”。
  • @camden_kid 完全正确。那可能是另一种选择。如果用户现在不想匹配(可以稍后匹配。即 Home 它必须保持默认(选择 ID:0))
  • 添加检查是否设置了 optionTwo,否则为 0
  • 感谢您的帮助:)
  • @agriboz 很高兴您终于找到了解决方案。 :-)
猜你喜欢
  • 2013-08-23
  • 1970-01-01
  • 2012-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多