2014-09-27 66 views
0

我想使用角度做一个简单的提交,但是$ scope.account_create.submit函数从未在提交时被调用,我向表单添加了name属性,确保提交按钮位于表单标签内,但仍然没有运气提交ng-submit的角度提交没有被调用

控制器

var tapp = angular.module('tailorapp.controllers').controller(
    'AccountCtrl', 
    ['$scope', '$state' , '$stateParams', '$ionicLoading', '$resource', 'localStorageService', 'settings', 'api', 'notification', 
    function($scope, $state, $stateParams, $ionicLoading, $resource, localStorageService, settings, api, notification) { 

    var _returnPath = $stateParams.returnPath; 
    $scope.mode = "signup"; 
    $scope.account_create = {}; 

    $scope.showSignIn = function(){ 
     $scope.mode = "signin"; 
    }; 
    $scope.showSignUp = function(){ 
     $scope.mode = "signup"; 
    }; 

    $scope.account_create.submit = function(item, event) { 
     _create_account($scope.account_create).success(function(data){ 
      $state.go(_returnPath); 
     }); 
    }; 

的Html

<ion-view title="Account"> 

<ion-nav-buttons side="right"> 
    <button class="button button-icon icon ion-bag righthd-icon" ng-click="gotoCart();"></button> 
    <button class="button button-icon icon ion-person righthd-icon"></button> 
</ion-nav-buttons> 

<ion-nav-buttons side="left"> 
    <button menu-toggle="left" class="button button-icon icon ion-navicon"></button> 
</ion-nav-buttons> 

<ion-content class="has-header"> 

    <div ng-show="mode == 'signup'"> 
     <form name="account_create" ng-submit="account_create.submit()"> 
      <div class="card"> 
... 
       <div class="item item-divider"> 
        <button class="button button-positive" type="submit">Create Account</button> 

回答

3

您的表单名称也是account_create。所以angular会用支持form指令的NgFormController实例替换你自己的包含submit函数的acount_create对象。

2

当您将属性name添加到表单时,您正在使用该名称在$ scope中创建一个varibale。在您的代码中,通过添加name="account_create",您将覆盖控制器中定义的$scope.account_create

https://docs.angularjs.org/api/ng/directive/form

如果重命名形式,它应该工作。

+0

哪个变量名? account_create?只是尝试过,并且老旧 – 2014-09-27 20:45:55

+0

我没有注意到你是在命名你的表格,请参阅我的编辑 – 2014-09-27 23:27:17

5

我发现ng-submit不会直接调用表单元素或元素直接调用表单元素之前调用ng-controller。我试图弄清为什么在ng-submit中没有任何事情发生后8个小时之后,我非常生气地找出这些规则。

+1

这是一个非常重要的位,但我在其他任何地方都没有发现。 – JBCP 2015-11-16 18:16:49

+0

你的8小时让我只花15分钟,谢谢。 – Francisco 2016-04-12 10:10:28

+0

我有同样的问题,我在这里寻找的错误,直到我发现 ,谢谢 ,但我不明白为什么 – 2017-03-25 00:25:41