我的网络应用程序必须将用户重定向到我无法控制的其他网站。该网站希望从用户那里收到一些POST参数。
如果没有角度,我将不得不使用如下形式重定向用户:
<FORM METHOD="POST" ACTION="https://otherwebsite.com/index.php">
<INPUT TYPE="HIDDEN" NAME="id" VALUE="A1S2D3">
<INPUT TYPE="hidden" NAME="number" VALUE="1234567">
<INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE="Submit">
</FORM>
在角度,这也可以,但我希望动作网址和“数字”的值来自角度的范围。
可悲的是,当我在值/动作属性中使用ng-model或{{var}}时似乎不起作用。
是否有任何想法将用户重定向到范围内有POST参数的其他网站?
答案 0 :(得分:4)
在这里,我找到了一种使用它的简单方法(有点使用)Angular。
我有一个角度函数
$scope.setAction= function(){
document.myForm.action='http://anothersite.com';
};
其中myForm
是表单的name属性。
<form action="http://asamplesite.com" method="POST" name="myForm">
看我的小提琴。 http://jsfiddle.net/nicolasmoise/f6R9x/
注意这种方式违背了“Angular Way”,因为在您的视图中,您无法看到该逻辑,它有点隐藏在控制器内部。然而,正如我所链接的问题所述,Angular不喜欢以旧方式提交表格。另一种方法是让表单通过ng-submit
调用一个函数来获取动态网址并进行重定向/重新加载(可能使用$location
)。这种方式可能会更长,但至少你的逻辑在你看来会更明显。
答案 1 :(得分:0)
使用ngSubmit指令,它允许您调用方法来提交表单。根据文档,如果表单包含action,data-action或x-action属性,那么它将执行默认表单操作。对于表单,表示将请求发送到服务器并重新加载当前页面。
<script>
function Ctrl($scope) {
$scope.number = "1234567";
$scope.id = "A1S2D3";
}
</script>
<form ng-submit ng-controller="Ctrl" data-action="https://otherwebsite.com/index.php">
<INPUT TYPE="HIDDEN" NAME="id" ng-model="id">
<INPUT TYPE="hidden" NAME="number" ng-model="number">
<input type="submit" id="submit" value="Submit" />
</form>
答案 2 :(得分:0)
我在隐藏输入方面遇到了同样的问题(看起来像是忽略了它们)。
我使用了这个解决方案:
<INPUT TYPE="text" NAME="number" ng-model="myNumber" hidden>