0

ng-submit を使用して、フォームが送信されたときに呼び出されるはずの http メソッド (rest サービスに対応) を呼び出す angular-promise を作成しました。それは決して起こらず、エラーもありません。関数が呼び出されないようです。だからここにJavaScriptコードがあります:

myapp.factory('CardFactory', ['$http', function($http){
return{
    cardService: function(hclass) {
        return $http({
            method: 'get',
            url: UrlServices.baseUrl + 'http://localhost:8080//HSRestServices/hsrest/decks/getCards/' + hclass,
        })
    }
    }
  }])
myapp.controller('CardCtrl', ['$scope',  'CardFactory', function($scope, CardFactory ){

$scope.card = "Druid";

$scope.cardService = function() {


    CardFactory.cardService($scope.card)
        .then(function (response) {

            $scope.status = response.status;
            $scope.card = response.data;

            console.log("Response: " + JSON.stringify({data: response.data}));

            if (response.status == 200){
                $scope.card = response.data;
            } else {
                console.log("Response: Something went wrong.");
            }
        }, function (response) {
            console.log("Response: Something went wrong.");
        })
};
 }]);

およびhtmlコード:

<body ng-app="mainApp">
<div ng-controller="CardCtrl">
<form ng-submit="cardService()">
    <input type="submit" value="Submit">
</form>
<p ng-model="card">{{card}}</p>

  </div>

 </body>

何かアイデアはありますか?よろしくお願いします。

4

2 に答える 2

1

If you don't see the word "Druid" on the app, most likely you haven't included angular.js and app.js in your application.

If you do, it's probably working, and you haven't properly defined UrlServices, and it cannot find it. You can check the browser console for more details.

Otherwise it works for me. Check out this jsfiddle: https://jsfiddle.net/j8o0ag4t/

In the console I see:

 Error: Can't find variable: UrlServices

cardService@http://fiddle.jshell.net/j8o0ag4t/show/:50:29 cardService@http://fiddle.jshell.net/j8o0ag4t/show/:62:28 http://ajax.googleapis.com/ajax/libs/angularjs/1.2.1/angular.min.js:160:97 http://ajax.googleapis.com/ajax/libs/angularjs/1.2.1/angular.min.js:177:84 $eval@http://ajax.googleapis.com/ajax/libs/angularjs/1.2.1/angular.min.js:100:328 $apply@http://ajax.googleapis.com/ajax/libs/angularjs/1.2.1/angular.min.js:101:110 http://ajax.googleapis.com/ajax/libs/angularjs/1.2.1/angular.min.js:177:71 http://ajax.googleapis.com/ajax/libs/angularjs/1.2.1/angular.min.js:27:19 forEach@[native code] p@http://ajax.googleapis.com/ajax/libs/angularjs/1.2.1/angular.min.js:7:262 c@http://ajax.googleapis.com/ajax/libs/angularjs/1.2.1/angular.min.js:26:493

于 2015-10-25T11:53:10.593 に答える
1

フォームに属性を与えるname必要があり、その後のすべてのフォーム要素もnameそれ自体を持つ必要があります。

また、タグをお付けng-modelすることはできません。p次のように入力タイプのテキストを使用します。

HTML:

<form name="cardForm" ng-submit="cardService()" novalidate>
    <input type="text" name="card" />
    <input ng-model="card" type="submit" value="Submit">
</form>
于 2015-10-25T11:54:07.667 に答える