ここでは、角度コントローラのハード・コード化されたHTMLフォーム名(保存機能内)を持っています。その代わりに、フォーム名を変数に入れてそこに入れたいと思っています。私は同様のquestionsを参照しましたが、解決策を見つけることができませんでした。htmlフォームの名前をコントローラに取得する方法は?
HTMLフォーム
<section xmlns="http://www.w3.org/1999/html">
<div class="page-header">
<h1>{{vm.drug._id ? 'Edit Drug Information' : 'Add New Drug'}}</h1>
</div>
<div class="col-md-12">
<form name="vm.form.addNewDrugForm" class="form-horizontal" ng-submit="vm.save(vm.form.addNewDrugForm.$valid)"
novalidate>
</form>
</div>
</section>
角度コントローラ
(function() {
'use strict';
// Drugs controller
angular
.module('drugs')
.controller('DrugsController', DrugsController);
DrugsController.$inject = ['$scope', '$state', '$window', 'Authentication', 'drugResolve'];
function DrugsController($scope, $state, $window, Authentication, drug) {
var vm = this;
vm.authentication = Authentication;
vm.drug = drug;
vm.error = null;
vm.form = {};
vm.remove = remove;
vm.save = save;
vm.printDrug = printDrug;
// Save Drug
function save(isValid) {
if (!isValid) {
$scope.$broadcast('show-errors-check-validity', 'vm.form.addNewDrugForm');
return false;
}
// TODO: move create/update logic to service
if (vm.drug._id) {
vm.drug.$update(successCallback, errorCallback);
} else {
vm.drug.$save(successCallback, errorCallback);
}
function successCallback(res) {
$state.go('drugs.view', {
drugId: res._id
});
}
function errorCallback(res) {
vm.error = res.data.message;
}
}
}
}());
ニース試みるが、これは、あなたが複数のフォームを持っている場合はめちゃめちゃになります:/コントローラからDOMを照会すると、次にアンチパターン –
ですが、彼はあなたの答えが正しいフォーム名 –
を渡す必要があるのと同じように 'index'を使ってそれを取得します。とにかく、フォームの正当性を渡していました'' ng-submit = "vm.save(vm.form.addNewDrugForm。$ valid)" '私は彼に' 'ng-submit =" vm.save(vm.form.addNewDrugForm) "を実行するように提案しました。私が思うどんな問題でもあります.. –