gpt4 book ai didi

javascript - Angular.js - 表单验证会发出任何事件吗?

转载 作者:数据小太阳 更新时间:2023-10-29 03:57:54 26 4
gpt4 key购买 nike

问题是,我正在使用 ui-router,我有两个 View ,一个是工具栏,第二个是表单内容。

现在我想在工具栏中有一个保存按钮,如果表单不是 $valid,该按钮将被禁用。但是这两个是完全不同的范围,就像:

  • 根作用域
    • 工具栏范围
    • 内容范围(使用form.$valid)

所以我想我会通过监听表单发出的某种 $valid 事件来处理它。

根据Vojta所说here这些事件应该存在,但我无法在任何地方找到它们的指定..并查看this我没有看到任何事件..

我可能会做

$scope.$watch('form.$valid', function(newVal, oldVal) {
$scope.$emit('validityChange', {'form':newVal});
});

不过感觉用事件比用这个会好一些

或者我应该尝试一些完全不同的东西吗?请注意,我不能将工具栏的 ui-view 放入内容的 ui-view.. 并根据 this , 两个 ui-views 根本不能有相同的范围。

最佳答案

直接回答问题:我不知道 angularjs 中的 native 表单事件。但是,如您所知,您可以轻松创建自己的事件,这将解决您的问题。

但这是我的建议:您正在尝试让两个 Controller 相互通信。使用事件可能是错误的方法。事件应该真正用于应用程序范围的通知,例如身份验证。

您可以将表单和提交按钮重构为共享同一 Controller 的两个指令。虽然它们不会共享作用域,但它们将共享一个可用于通信的 Controller 对象。我会这样做。

另一种方法是将两个作用域相互嵌套。将表单代码移动到更高级别的 Controller 中。像这样:

  • 根作用域
    • main//你的表单代码在这里
      • 工具栏//提交按钮可以访问功能
      • content//form 可以访问功能

希望对您有所帮助!

关于javascript - Angular.js - 表单验证会发出任何事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17653086/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com