【问题标题】:How to take object input in angularjs如何在angularjs中获取对象输入
【发布时间】:2016-07-13 10:32:52
【问题描述】:

我有这样的表格的一部分

<input type="text" ng-model="gen.name" ng-repeat="gen in movie.genres">

movie.genre 中的gen 是一个具有 2 个键值对的对象

Object{
 id: 24,
 name : insidious
}

如果我在表单提交上取值,我只会得到 gen.name 作为值 但我也需要 gen 对象的id

那么我还能做些什么来获取它的 id 呢? 请注意有多个输入值,因为它们在 ng-repeat 中

【问题讨论】:

  • movie.genres 是一个对象数组还是只是一个对象?
  • 创建小提琴或 plnkr。
  • 你说 "movie.genre is an object" 有问题。用适当的信息更新问题。你在哪里绑定id
  • @TJ 我不明白你的问题。我正在将此 id 发送到数据库,因为数据库中已经创建了带有一些 id 的流派。因此,表单输入值名称和 id 被识别以供将来参考。它类似的对象已经有流派,可以通过不同的流派变化进行修改。
  • @Invictus 你的表单应该有一个表单控件,其 id 作为它的值。否则为什么表单提交要发送该信息?所以我问你在哪里(在什么元素上)绑定了genid 属性?顺便说一句,您究竟是如何提交的?

标签: javascript angularjs forms input


【解决方案1】:

您可以使用Array.findIndex() 查找具有所选流派名称的对象的ID。

这样的事情应该可以工作(只要movie.genres 是一个数组,valueFromForm 是您从ng-model 获得的值):

let index = movie.genres.findIndex(gen => gen.name === valueFromForm);
id = movie.genres[index].id;

此代码使用 ES6,因此如果您不进行转编译,则需要最新的浏览器。 您可以将此其他版本用于旧版浏览器:

var id = -1;
for (var i=0; i < movie.genres.length; i++) {
  if (movie.genres[i].name === valueFromForm) {
    id = movie.genres[i].id;
    break;
  }
}

【讨论】:

    【解决方案2】:

    这是您想要的工作示例。我希望这能帮助您解决问题:

    angular.module('submitExample', [])
        .controller('ExampleController', ['$scope', '$log', function($scope, $log) {
            $scope.movie = {
            	title: 'Movie Title',
                genres: [{
                    name: 'Action'
                }, {
                    name: 'Drama'
                }, {
                    name: 'Comedy'
                }]
            };
            $scope.submit = function() {
                $log.info($scope.movie);
            };
        }]);
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.1/angular.min.js"></script>
    <div ng-app="submitExample">
        <form ng-submit="submit()" ng-controller="ExampleController">
            <input ng-model="gen.name" ng-repeat="gen in movie.genres"><br>
            <input type="submit" value="Submit">
        </form>
    </div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-09
      • 2013-04-13
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多