我有一个包含两种提交输入类型的表单。根据单击的提交,我希望将表单保存为草稿或正确的表格。
我正在考虑在提交输入中添加一个值/属性,也许是ng-model属性。。
<form ng-submit="submitNew()">
<div>
Text:
<input type="text" ng-model="myForm.text" />
</div>
<div>
<input type="submit" name="correct" value="Add new" />
</div>
<div>
<input type="submit" name="draft" value="Save as draft" />
</div>
</div>
</form>
在控制器中,我想将其作为布尔值("myForm.isDraft"(添加到使用POST方法发送的数据中:
myApp.controller('myAppController', ['$scope', '$http', '$log',
function($scope, $http, $log) {
$scope.submitNew = function() {
$http({
method: 'POST',
url: '/app/submit',
data: {
text: $scope.myForm.text,
isDraft: $scope.myForm.isDraft,
}
})
};
}
]);
它如何处理提交类型的输入?
编辑-向前迈出一步:
更改后提交到:
<div>
<input type="submit" ng-click="isDraft = false" value="Add new" />
</div>
<div>
<input type="submit" ng-click="isDraft = true" value="Save as draft" />
</div>
在$scope.submitNew = function()
中添加日志后,我看到$scope.isDraft是true还是false,这取决于单击了哪个按钮。但是,在发送到后端的数据中,它总是错误的。
控制器现在:
$scope.submitNew = function() {
$log.info("Log: isDraft: " + $scope.isDraft);
$http({
method: 'POST',
url: '/app/submit',
data: {
text: $scope.myForm.text,
isDraft: $scope.myForm.isDraft = $scope.isDraft,
}
})
};
如果我将isDraft: $scope.myForm.isDraft = $scope.isDraft
更改为isDraft = $scope.isDraft
,它仍然无法正常工作。
试着把它放在这样的函数上
$scope.setDraft = function(isDraft) {
$scope.isDraft = isDraft;
//try console.log() to see if the values are correct
//but if its keeps return false try adding this $scope.$apply();
}
在你的html中会像这个
<div>
<input type="submit" ng-click="setDraft(false)" value="Add new" />
</div>
<div>
<input type="submit" ng-click="setDraft(true)" value="Save as draft" />
</div>
或者你可以使用@Eric建议,而不是使用ng-submit,只需创建新功能并像这个一样在ng-click上使用
$scope.submitNew = function(isDraft) {
$http({
method: 'POST',
url: '/app/submit',
data: {
text: $scope.myForm.text,
isDraft: isDraft,
}
})
};
在html中会像这个
<form>
<div>
Text:
<input type="text" ng-model="myForm.text" />
</div>
<div>
<input type="button" ng-click="submitNew(false)" name="correct" value="Add new" />
</div>
<div>
<input type="button" ng-click="submitNew(true)" name="draft" value="Save as draft" />
</div>
</div>
</form>
创建一个变量,该变量是通过点击每个提交按钮来设置的,然后您可以跟踪点击了哪个按钮。