javascript - AngularJS - 包含子范围的范围

标签 javascript angularjs

我有一个例子,我想为模块化表单创建一个可重用指令,其中有一个主表单指令旨在与字段输入指令的某种组合一起使用。像这样的事情:

<form-container submit-path="/path/to/api/">
    <input-field label="Foo"></input-field>
    <select-field label="Bar"></select-field>
</form-container>

我会在表单容器上使用隔离范围,并且还需要为字段创建一个嵌入范围,但我不确定字段要使用什么。我设想范围层次结构是这样的:

- (1) form-container isolate scope
- (2) form-container transcluded scope
  - (3) input-field scope
  - (4) select-field scope

范围 (1) 将具有从表单收集和发布数据的功能,但它需要访问绑定(bind)到范围 (3) 和 (4) 中表单元素的数据。

这可能吗?

由于首选方法是将模式存储在范围 (2) 中,因此我需要将字段绑定(bind)到不同的变量名称,但似乎我无法在 ng-model 上进行插值指令的属性。 编辑: 看来我可以在编译函数中手动执行此操作? 第二次编辑:一次 this bug已修复。

此外,表单提交功能无法直接访问范围 (2) 中的数据。您可以使用 $$nextSibling,但显然这是 bad practice.

有没有办法让作用域(3)和(4)直接继承作用域(1)?

最佳答案

http://plnkr.co/edit/F1e1mKA2UU3EL1M9yaJ0?p=preview

这是我试图通过使用来实现的 指令 Controller 并让子指令更新 通过其 Controller 在父指令中获取值。

我对这个问题投了赞成票,因为我不满意并希望看到更好的解决方案。

关于javascript - AngularJS - 包含子范围的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17513319/

相关文章:

javascript - 如何将 JSON 文件导入到 javascript 数组

javascript - Webgl 中的球体网格

javascript - Angular 应用程序中的超链接需要 #!而不仅仅是#

javascript - 为什么使用 Function.prototype.bind 而不是 Function.prototype.call?

javascript - 捕获隐藏输入元素 jQuery 的值

javascript - Angular ng-repeat 不适用于深度链接

javascript - 如何为 $http 请求添加进度条

javascript - 使用url的Angularjs下载功能

javascript - .parents() 在 Angular 中?

javascript - 如何使用 $(target) inside 指令?