【问题标题】:Submit form and cordova functions are not getting called提交表单和cordova函数没有被调用
【发布时间】:2016-04-18 07:09:42
【问题描述】:

当我尝试调用 ng-submit - submitForm() 函数时,我无法调用该函数并且它不执行任何操作。我该如何解决?

(function () {
  'use strict';

  /**
   * @ngdoc function
   * @name app.controller:MainCtrl
   * @description
   * # MainCtrl
   * Controller of the app
   */
  angular.module('app')
    .controller('MainCtrl', ['$scope', 'cordova', function ($scope, cordova) {
      console.log("Hello...");
      cordova.ready.then(function () {
            alert('Cordova is ready');
            console.log("Ready....");
      });
      // function to submit the form after all validation has occurred            
      this.submitForm = function() {
        console.log("Submit form...");
        // check to make sure the form is completely valid
        if ($scope.userForm.$valid) {
            alert('our form is amazing');
            console.log("For submitted..")
        }
      };
  }]); 
  
})();

【问题讨论】:

    标签: javascript angularjs cordova angular-controller


    【解决方案1】:

    注意:我认为cordova.ready 可以正常工作,但只有当您的应用在模拟器或物理设备中运行时才能解决。

    我建议在this.submitForm 方法中检查cordova 是否准备就绪。

    (function () {
      'use strict';
    
      angular.module('app')
        .controller('MainCtrl', ['$scope', 'cordova', function ($scope, cordova) {
          console.log("Hello...");
    
          // function to submit the form after all validation has occurred            
          this.submitForm = function() {
            console.log("Submit form...");
            cordova.ready.then(function () {
                alert('Cordova is ready');
                console.log("Ready....");
                validateAndSendForm();
            }, function() {
                console.log('It is not cordova, decide to send or not the form.');
                // validateAndSendForm();
            });
          };
          function validateAndSendForm() {
            // check to make sure the form is completely valid
            if ($scope.userForm.$valid) {
                alert('our form is amazing');
                console.log("For submitted..")
            }
          }
      }]); 
    
    })();
    

    您的 html 应该类似于:

    <div ng-controller="MainCtrl as main">
      <form method="post" ng-submit="main.submitForm()">
        <!-- More fields here -->
        <button type="submit">Submit</button>
      </form>
    </div>
    

    【讨论】:

    • 我在 app.js 中有它 - (function () { 'use strict'; angular .module('app', ['ngRoute', 'ngCookies']) .config(config) ; config.$inject = ['$routeProvider', '$locationProvider']; function config($routeProvider, $locationProvider) { $routeProvider .when('/', { controller: 'MainCtrl', templateUrl: 'views/main .html', controllerAs: 'main' }) .otherwise({redirectTo: '/' }); } })();
    • 伟大的@Smitha,那么这个:ng-controller="MainCtrl as main" 是不必要的。
    【解决方案2】:

    我看不出您是否使用了“Controller as”语法,否则,您必须将 submitForm 函数添加到范围:

    $scope.submitForm = 函数...

    【讨论】:

    • 我在 app.js 中有它 - (function () { 'use strict'; angular .module('app', ['ngRoute', 'ngCookies']) .config(config) ; config.$inject = ['$routeProvider', '$locationProvider']; function config($routeProvider, $locationProvider) { $routeProvider .when('/', { controller: 'MainCtrl', templateUrl: 'views/main .html', controllerAs: 'main' }) .otherwise({redirectTo: '/' }); } })();
    猜你喜欢
    • 1970-01-01
    • 2019-10-16
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多