fxc*_*xck 10 javascript validation angularjs angular-ui angularjs-scope
问题是,我使用的是ui-router,我有两个视图,一个是工具栏,第二个是表单内容.
现在我想在工具栏中有一个保存按钮,如果没有形式,将禁用该按钮$valid
.但这两个是完全不同的范围,它就像:
form.$valid
)所以我认为我会通过听取表单发出的某些$ valid事件来处理它.
根据Vojta 在这里说的那些事件应该存在,但我找不到它们在任何地方指定..并且看着这个我看不到任何事件..
我可能会这样做
$scope.$watch('form.$valid', function(newVal, oldVal) {
$scope.$emit('validityChange', {'form':newVal});
});
Run Code Online (Sandbox Code Playgroud)
但感觉就像使用事件而不是这样会更好
或者我应该尝试完全不同的东西?请注意,我不能将工具栏的ui-view放在内容的ui-view中......并且根据这一点,两个ui-views根本不能具有相同的范围.
小智 0
直接回答问题:我不知道 AngularJS 中的原生表单事件。但是,如您所知,您可以轻松创建自己的事件,这将解决您的问题。
但我的建议是:您正在尝试让两个控制器相互通信。使用事件可能是错误的方法。事件确实应该用于应用程序范围的通知,例如身份验证。
您可以将表单和提交按钮重构为共享同一控制器的两个指令。虽然它们不会共享作用域,但它们将共享可用于通信的控制器对象。我会这样做。
另一种方法是将两个范围相互嵌套。将表单代码移至更高级别的控制器。像这样:
希望有帮助!