AngularJS& UI - 在选项卡内部无法访问外部表单

时间:2013-06-26 16:15:16

标签: twitter-bootstrap tabs nested angular-ui angular-ui-bootstrap

我正在使用AngularJS版本1.0.5和Angular UI(Bootstrap)0.4.0。 我正在尝试集成两个功能:UI的选项卡和Angular的形式。

我有嵌套表格。 一个表单(outerForm)包装整个tabset。 另一种形式(innerForm)位于一个选项卡中。

我希望在标签之外有一个按钮,根据 innerForm 的有效性启用\禁用!

当我尝试从表单外部访问innerForm。$有效时,它不起作用。

这是一个吸虫: http://plnkr.co/edit/sEz8TG?p=preview

现在,当我尝试使用常规Bootstrap时,它似乎确实有效: http://plnkr.co/edit/Somic4?p=preview

当内部表单位于常规div中时,我可以从外部访问它。 当我使用Angular UI的特殊“tab”语法时,它不再起作用了。

1 个答案:

答案 0 :(得分:5)

tabset 指令生成的局部作用域不属于外部表单作用域。

https://github.com/angular-ui/bootstrap/blob/master/src/tabs/tabs.js#L78

在可行的示例中,您的内部和外部表单属性在同一范围内。为了证明这一点,我删除了外部tabset和tab标签指令show here并且它有效。当使用tabset指令包围标记时,会生成一个新的隔离范围,其中innerForm是其中的一部分

要解决此问题,您可以对表单中的更改进行$ watch监视,然后使用$ emit()(http://docs.angularjs.org/api/ng。$ rootScope.Scope)与内部作用域的外部作用域进行通信。和有效性。

如果您使用的是Chrome,请获取Batarang extension,其中会显示您的范围层次结构