【问题标题】:Fields values generated using ng-repeat is not getting while submit提交时未获取使用 ng-repeat 生成的字段值
【发布时间】:2014-11-08 18:50:50
【问题描述】:

表单提交模板。此页面将显示表单模板。最初它显示标题,全名。单击“添加标签”链接会生成用于输入标签的新输入字段。

提交时,字段 input(story.tag) 不包含在 RequestPayload 中

<form novalidate ng-submit="save()">

    <div>
        <label for="title">Title</label>
        <input type="text" ng-model="story.title" id="title" required/>
    </div>

    <div>
        <label for="firstName">Full Name</label>
        <input type="text" ng-model="story.fullname" id="fullname" required/>
    </div>

    <div ng-controller="Note" >
      <div ng-repeat="story in items ">
        <label>Tag {{$index+1}}:</label>
        <input type="text" ng-model="story.tag" id="tag" required/>
      </div>
      <a ng-click="add()">Add Tags</a>
    </div>


    <button id="save" class="btn btn-primary">Submit Story</button>
</form>

脚本:- app.js

angular.module("getbookmarks", ["ngResource"])
.factory('Story', function ($resource) {
    var Story = $resource('/api/v1/stories/:storyId', {storyId: '@id'});
    Story.prototype.isNew = function(){
        return (typeof(this.id) === 'undefined');
    }
    return Story;
})
.controller("StoryCreateController", StoryCreateController);


function StoryCreateController($scope, Story) {

   $scope.story = new Story();

   $scope.save = function () {
      $scope.story.$save(function (story, headers) {
         toastr.success("Submitted New Story");
      });
   };
}

//add dynamic forms
 var Note = function($scope){
    $scope.items = [];

    $scope.add = function () {
      $scope.items.push({ 
        inlineChecked: false,
        tag: "",
        questionPlaceholder: "foo",
        text: ""
      });
    };
  }

【问题讨论】:

    标签: angularjs angularjs-controller angularjs-ng-form


    【解决方案1】:

    ng-repeat 中的故事对象在另一个范围内。这个JSFiddle 应该可以满足您的需求。

    <div ng-app>
        <div ng-controller="NoteCtrl">
            <form novalidate ng-submit="save()">
                <div>
                    <label for="title">Title</label>
                    <input type="text" ng-model="story.title" id="title" required/>
                </div>
                <div>
                    <label for="firstName">Full Name</label>
                    <input type="text" ng-model="story.fullname" id="fullname" required/>
                </div>
                <div ng-repeat="story in items">
                    <label>Tag {{$index+1}}:</label>
                    <input type="text" ng-model="story.tag" required/>
                </div> <a ng-click="add()">Add Tags</a>
    
                <button id="save" class="btn btn-primary">Submit Story</button>
            </form>
            <div ng-repeat="test in items">
                <label>Tag {{$index+1}}: {{test.tag}}</label>
            </div>
        </div>
    </div>
    

    NoteController:

    function NoteCtrl($scope) {
        $scope.story = {};
        $scope.items = [];
        $scope.story.tag = $scope.items;
    
        $scope.add = function () {
            $scope.items.push({
                inlineChecked: false,
                tag: "",
                questionPlaceholder: "foo",
                text: ""
            });
            console.log($scope.story);
        };
    }
    

    【讨论】:

    • 感谢您的回复。在执行上述操作时,它会在控制台中获取所有字段值,但在 RequestPayload 上它不包含任何值,即为空
    猜你喜欢
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 2016-01-10
    相关资源
    最近更新 更多