强制 ngSubmit 在存在 [action] 属性的情况下
Forcing ngSubmit in presence of [action] attribute
Angular 说什么...
[ngSubmit] 阻止默认操作(对于表单意味着将请求发送到服务器并重新加载当前页面),但前提是表单不包含操作、数据操作或 x 操作属性。
因此,如果您无法从 HTML 中删除 [action] 属性,您将如何覆盖此行为以在表单提交时注入自定义代码并防止触发定义的 [action] ?
一种可能的解决方案是创建一个指令并覆盖 DOM 属性"onsubmit"。这里的缺点是,当您可以使用 angular 属性达到相同的要求时,您被迫在后端对其进行配置
app.directive("contactForm", function(){
return {
link: function( scp, elm, att )
{
elm[0].onsubmit = function( evt )
{
/* your custom code here */
}
}
};
});
提前致谢
如果要
在编译ng-submit
之前删除action
,只需创建一个具有更高优先级的指令即可删除该属性。
app.directive('remove-action', function () {
return {
priority: 1, // ngSubmit has priority 0
compile: function (element) {
element.removeAttr('action');
return function link () {};
}
};
});
所以我遇到了类似的问题,这就是我最终解决它的方式。
对于 angularjs 1.2,将动作设置为空白就足够了
操作 =''
对于 angularjs 1.3,您必须将操作设置为如下所示的内容
action = 'JavaScript:;'
我不确定这是否是有效的 html 或最佳实践,但它确实有效。
相关文章:
- 在不知道深度或父属性的情况下从对象中删除属性
- 如何在不使用Page.Theme属性的情况下设置页面样式和主题
- 在不使用lodash-get的情况下从json中提取深层属性
- Haxe Javascript:在不使用Reflect的情况下按名称获取和设置属性
- 如何在不链接/jquery的情况下使用方法应用css属性数组
- AngularJs,在没有隔离的情况下将指令属性添加到作用域
- vue-js-单选按钮won't默认情况下使用v-model属性进行检查
- 如何在不使用css转换的情况下将jQuery animate与css3属性相结合
- Javascript:如何在不使用getElementById的情况下更改子元素的获取和更改属性
- 在没有特定属性的情况下使用jQuery.css()
- 如何在没有类属性的情况下使用Rangy.js创建标记
- 如何在不丢失属性的情况下更改元素标记
- 在IE中没有开发人员控制台的情况下,JavaScript无法运行(can't属性为缺少控制台)
- 角度单元测试:如何在没有范围的情况下测试控制器属性
- Kinetic.js / Javascript:在不使用 eval() 的情况下调用变量作为属性
- 默认情况下,一个模型属性等于 sail.js 模型中的另一个模型属性
- 如何在没有代码隐藏访问权限的情况下将自定义 HTML 属性添加到 ASP.NET 标签
- 为什么您可以在不引用“this”的情况下操作对象属性
- 在不使用原型的情况下向函数添加属性
- Rail对默认情况下隐藏在表单中的属性进行建模