【问题标题】:AngularJS dropdown selected values need as JSONAngularJS 下拉选择的值需要作为 JSON
【发布时间】:2015-12-09 07:03:51
【问题描述】:

我的应用程序中有多个下拉菜单,这些下拉菜单通过控制器中给出的 json(基本上是地图)填充。

对于第一个下拉列表,如果我选择 xyz 值,则对应的 xyz1 值应该出现在下拉列表中,第三个下拉列表也类似。目前这一切都很好。但现在我希望这些用户选择的值以 json 形式获取,以便我可以发送回后端进行进一步处理。如果我在控制台上打印,我没有得到选择的值,而是错误的第二个下拉值。

codepen

working plunker

【问题讨论】:

  • 请正确格式化您的问题并检查您的 codepen,因为目前它不工作(不包括 AngularJS)。
  • 似乎在这里工作..plnkr.co/edit/gLAPD2pO4vfQqpxFIGp8?p=preview。如果你的意思是别的,请提及。你的意思是顺序搞错了吗?
  • 谢谢。在提交时我想打印选定的下拉值,但它打印错误的值。你能建议我如何获得选定的表单值吗?
  • @PitchaiPazhani - 在 json 之后添加了提交表单功能。你能在这里检查一下我哪里出错了。
  • 如果依次选择 ApHelpDesk、CreateNewIncidentApHelpDeskPage、ReOpenIncident,您的预期输出是什么?

标签: angularjs json forms dropdown


【解决方案1】:

我了解您需要从动态输入元素中获取值。为此,您需要将 ng-model 设置为输入元素,而不是 div。

以下更新的部分会有所帮助。

<div ng-init="pageObjectName.pageObjParam={}" ng-repeat="(key , value) in pageObjectName.pageObjMethod">
    <input ng-model='pageObjectName.pageObjParam[key]' value='' placeholder="{{key}} - {{value}}"></input>
</div>

现在您可以从 $scope.pageObjectName.pageObjParam 获取这些值。

Updated Plunker

编辑

我希望以上部分有助于从动态输入字段中获取价值。现在我建议您更新如下代码块以从下拉列表中获取选定的值(即,为每个选择使用一个隐藏的输入字段),您将得到您想要的。

 <select id="pageObj" ng-model="pageObjectName.pageObj" ng-options="key for (key,value) in pageData" ng-change="pageObjectName.pageObjParam.pageObj=pageObjectName.pageObj">
    <option value=''>Select Page Object</option>
    </select>
 <input ng-model='pageObjectName.pageObjParam.pageObj' hidden/>

You can have a look at the same plunker now

【讨论】:

  • 所以我无法获得下拉选择的值是吗?只能获取输入值?
  • 您已经从 $scope.pageObjectName.pageObj 获得了下拉值,对吧?这一个用于从动态输入元素中获取值。您可以通过 $scope.pageObjectName.pageObj.pageObjParam = $scope.pageObjectName.pageObjParam 合并它们
  • 不,我没有。如果我控制台这个 var data = $scope.pageObjectName.pageObj; console.log("json 是", data);它没有给我正确的选择下拉值。相反,它给了我第二个下拉所有选项。
  • @Pitchai- 这仍然对我不起作用。我仍然得到 json 中可用的选项的完整列表,而不是选定的选项。所以我通过使用id并使用简单的JS方式尝试了上述答案。
【解决方案2】:

您的 codepen 似乎令人困惑且无法正常工作。由于您已经实现了下拉菜单,我将从这里继续介绍如何从下拉菜单中获取数据并将数据转换为 JSON。

从下拉列表中获取数据后,创建一个 JSON 对象并存储它。 我写了一个小例子来展示如何存储数据。

 $scope.selectedState = function(item) {
      var output = {};
      output.name = item.name;
      $scope.viewOutput = output;
    };  

更新:

我很努力,但无法使用角度方式获取值。如果您仍在寻找答案,那么我们可以使用基本的 javascript 方式。请参考 plunker。

$scope.submitMyForm = function() {
      /* while compiling form , angular created this object*/
      var pgObj = $scope.pageObj;
      var pgClass = $scope.pageClass;
      var pgMethod = $scope.pageObjMethod;

      var pgObjvalue = document.getElementById('pageObj').value;
      var pgClassvalue = document.getElementById('pageClass').value;
      var pgMethodvalue = document.getElementById('pageMethod').value;

      $scope.output = {'object' : pgObjvalue, 'class': pgClassvalue, 'method': pgMethodvalue};
      console.log(data);
    };

工作Plunker

P.S:如果您使用角度方式找到答案,请在答案部分发布后告诉我。

【讨论】:

  • @Che- 这是工作的插件-plnkr.co/edit/gLAPD2pO4vfQqpxFIGp8?p=preview
  • @user1814044 您要查找的输出是什么?
  • @Che- 如果我选择 ITSM->ITSMIncidentPage->searchFilterInConfigItemLookUp 并在输入框中输入随机值(如“abc”、“xyz”、true)。我应该能够以 JSON 形式获取上述所有这些输入值并在控制台上打印它们。
  • @user1814044 我已经更新了我的答案。我无法使用角度方式来做到这一点。如果您有答案,请在此处发布。
  • @Che- 我只尝试过这种 JS 方式。找不到任何其他可行的选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-28
  • 2013-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多