javascript - Angular.js ng-submit 触发了两次并且没有从表单中获取值

标签 javascript angularjs ionic-framework

我有一个 angularjs 表单

<form ng-submit="addNewNote(noteData)">
        <button type="submit"  class="md-icon-button ion-nav-button-right md-button md-default-theme" aria-label="Setting" tabindex="0">
            {{noteTxt}}
        </button> 
 <ion-content>
<div id="note-detail-content">
                <md-input-container md-no-float>
                    <input required name="noteTitle" placeholder="Note Title (Required)" ng-model="noteData.title">
                </md-input-container>
                <textarea rows="7" ng-model="noteData.description" maxlength="250"
                          placeholder="Write something here ...."></textarea>
                <span>
                </span>
            </div><!--end content section-->
        </ion-content>
    <!--end note detail section-->
      </form>

问题是 ng-submit 被触发了两次,而且 noteData.title 即使存在值也不会读取任何值。 我收到此错误

Cannot read property 'title' of undefined

I've checked this question但我的代码不包含两次 Angular ,如果是,我该如何检查它?

$scope.addNewNote=function(noteData){
    alert(noteData.title);
}

index.html 链接

    <!-- Ionic javascript lib -->
    <script src="lib/ionic/js/ionic.bundle.js"></script>
    <!-- end Ionic javascript lib -->

    <!-- Angular javascript lib -->
    <script src="lib/angular-messages.js"></script>
    <script src="lib/angular-aria.js"></script>
    <script src="lib/angular-material.js"></script>
    <!-- end Angular javascript lib -->

    <!-- Cordova script (this will be a 404 during development) -->
    <script src="lib/ng-cordova.js"></script>
    <script src="cordova.js"></script>

更新 app.js 文件

.state('app.addnote', {
                url: "/addnote",
                cache: false,
                views: {
                    'menuContent': {
                        templateUrl: "templates/note/html/note-add.html",
                        controller: 'AddNotesCtrl'
                    }
                }
            })
            .state('app.notelist', {
                url: "/notelist",
                params:{
                    isAnimated:true
                },
                cache: false,
                views: {
                    'menuContent': {
                        templateUrl: "templates/application-storage/local-application-db/html/note-list.html",
                        controller: 'noteListCtrl'
                    }
                }
            }

)

Controller .js

  var appControllers = angular.module('starter.controllers', []); // Use for all controller of application.
    var appServices = angular.module('starter.services', []);// Use for all service of application.

appControllers.controller('AddNotesCtrl',function($scope,$rootScope,$state,$mdToast){


}

最佳答案

我不知道为什么它会触发/提交两次(您确定没有双重函数声明或声明 Controller 两次,例如在 html 和路由等中?)。它不会为我这样做,但对于第二个问题,它不提交数据。您是否在 Controller 中的任何位置声明了变量 noteData ?如果您在 Controller 中设置它,然后像这样捕获提交函数,那么它将显示数据:

$scope.noteData = [];

$scope.addNewNote = function(noteData) {
  console.log('form submitted');
  console.log(noteData);
};

编辑:

请查看this post针对表单提交两次的问题。您的问题与您在问题中提供的代码不重复,因此您必须有其他地方导致此问题。

关于javascript - Angular.js ng-submit 触发了两次并且没有从表单中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37518582/

相关文章:

javascript - JQuery - 对象 [object Object] 没有方法

javascript - 如何从 JavaScript 中的另一个外部函数访问嵌套的内部函数?

javascript - 为什么在 DOM 中插入中间非标准元素会破坏弹性框?

javascript - 使用 ionic 中的 angularjs 创建和更新全局列表

JavaScript 完全内联工作

javascript - Webpack 没有加载 css

javascript - 指令绑定(bind)未定义

javascript - Angularjs 可编辑预输入不更新范围

Android 哈希键只能工作一次

angularjs - 将youtube视频嵌入到iFrame中