2014-09-27 63 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