为什么ng-submit没有启动$scope.submit函数

Why is the ng-submit not firing the $scope.submit function?

本文关键字:scope submit 函数 启动 ng-submit 为什么      更新时间:2023-09-26

我有带有以下代码的App.js:

var app = angular.module('githubApp', []);

我有githubAppController,代码如下:

app.controller('githubController', function ($scope, $http) {
    $scope.submit = function () {
        var promise = $http.get('https://api.github.com/users/odetocode');
        promise.then(onUserGet);
        var onUserGet = function (response) {
            $scope.user = response.data;
        };
    };
});

在我的page.html中,我有以下代码:

!DOCTYPE html>
<html >
<head>
    <title></title>
    <meta charset="utf-8" />
    <link href="Content/bootstrap.min.css" rel="stylesheet" />
    <link href="Content/custom.css" rel="stylesheet" />
    <script src="Scripts/jquery-1.9.1.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
    <script src="Scripts/jquery.validate.min.js"></script>
    <script src="Scripts/App.js"></script>
    <script src="Scripts/githubController.js"></script>
</head>
<body ng-app="githubApp">
    <div ng-controller="githubController">
        <form class="form-horizontal" ng-submit="submit()">
 <div class="form-group">
                    <div class="col-sm-offset-2 col-sm-10">
                        <input type="submit" id="submit" class="btn btn-primary" value="Submit" />
                        <input type="reset" id="submit" class="btn btn-primary" value="Reset" />
                    </div>
                </div>
        </form>
<div class="col-sm-5">
            <label>{{user.name}}</label>
        </div>
        <div class="col-sm-7">
            <a ng-href="{{user.blog}}">{{user.company}}</a>
        </div>
        <div>
            <img ng-src="{{user.avatar_url}}" />
        </div>
    </div>

为什么ng-submit没有启动$scope.submit函数?我做错什么了吗?

var app = angular.module('githubApp', []);
app.controller('githubController', function($scope, $http) {
  $scope.submit = function() {
    var promise = $http.get('https://api.github.com/users/odetocode');
    promise.then(onUserGet);
    var onUserGet = function(response) {
      $scope.user = response.data;
    };
  };
});
<!DOCTYPE html>
<html>
<head>
  <title></title>
  <meta charset="utf-8" />
  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
</head>
<body ng-app="githubApp">
  <div ng-controller="githubController">
    <form class="form-horizontal" ng-submit="submit()">
      <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
          <input type="submit" id="submit" class="btn btn-primary" value="Submit" />
          <input type="reset" id="submit" class="btn btn-primary" value="Reset" />
        </div>
      </div>
    </form>
    <div class="col-sm-5">
      <label>{{user.name}}</label>
    </div>
    <div class="col-sm-7">
      <a ng-href="{{user.blog}}">{{user.company}}</a>
    </div>
    <div>
      <img ng-src="{{user.avatar_url}}" />
    </div>
  </div>

谢谢。

var promise = $http.get('https://api.github.com/users/odetocode');
promise.then(onUserGet);
var onUserGet = function (response) {
  $scope.user = response.data;
};

此时尚未定义CCD_ 1。你在定义它之前先调用它。这行不通。

因此,submit被触发(与您的想法相反(。但因为它坏了,你不会观察到预期的副作用。

使用以下代码。

$scope.submit = function() {
        var promise = $http.get('https://api.github.com/users/odetocode');
        promise.then(function(response) {
          $scope.user = response.data;
        });

您可以在控制器中使用类似的东西

var app = angular.module('githubApp', []);
app.controller('githubController', function ($scope, $http) {
    $scope.submit = function () {
        console.log("In function");
        $http.get('https://api.github.com/users/odetocode').success(function(data){
          $scope.user = data;
        })

    };
});