フォームを送信するための角型テンプレートを示すadd new user
ボタンがあるページがあります。フォーム提出方法は、submit
メソッドUser Controller
にバインドされています。フォームはサーバーに送信され、応答は取得されますが、コード$scope.users = []
は機能しません。私はconsole.log($scope.users)
がすでにリストされているユーザーを表示していることを確認しましたが、$scope.users = []
行のためにビューから削除されることが予想されますが、これは起こりません。ここにデータバインドに問題があるようです。
users.html
:
<div ng-controller = "UserController as uc">
/***** table was omitted ********/
<button type="button" ng-click="showForm()" class="btn btn-info">show new form</button>
<div ng-show="pc.formVisible" ng-include="'assets/templates/new_user.html'"></div>
</div>
new_user.html
:
<div class="new-user-form">
<form ng-submit="submit()" ng-controller="UserController">
/******* form groups omitted *********/
<button type="submit" class="btn btn-default">submit!</button>
</form>
</div>
app.js
:
(function() {
var app = angular.module('MyStock', ['ui.bootstrap']);
app.controller('UserController', ['$scope', '$http', '$uibModal', function($scope, $http, $uibModal) {
$scope.users = [];
var formVisible = false;
var cntl = this;
cntl.formVisible = false;
$http.get('http://127.0.0.1:8080/api/customers', method='jsonp').success(function (data) {
$scope.users = data;
});
$scope.showForm = function() {
cntl.formVisible = true;
};
$scope.submit = function() {
$http({
method: 'POST',
url : 'http://127.0.0.1:8080/api/customers',
data: $scope.user,
headers : {'Content-Type': 'application/x-www-form-urlencoded'}
}).then(function(response) {
console.log($scope.users);
$scope.users = [];
});
};
}]);
})();
あなたは 'NG-コントローラ= "UserControllerで"'二回があったのでそれはNG-include'テンプレート 'に異なるコンテキストを割り当てている?なぜ –
あなたは 'data:$ scope.user'を単数ユーザと同じように送信しています。それはあなたのコントローラのどこにありますか?私はそれを見ない。 – Kyle
@KKKKKKKK '$ scope.user'は要求と応答をチェックしたのでOKです。ここでの問題は、コールバック関数のバインディングがビューと同期されていないため、コールバック関数のバインドが正しく機能しないことです。 – Pooya