javascript - ng-模型在 ng-transclude 中

标签 javascript angularjs data-binding

我在 ng-transclude 中使用 ng-model 时遇到问题。

由于 ng-transclude 创建子作用域,因此不能再将值设置为外部作用域。

没有 ng-transclude 一切正常:

{{text}}
<div>
  <textarea ng-model="text"></textarea>
</div>

使用 ng-transclude 文本不会更新,因为 textarea 只修改子范围:

{{text}}
<pane>
   <textarea ng-model="text"></textarea>
</pane>

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

除了使用 ng-model="$parent.text" 还有其他方法吗?

最佳答案

由于 $parent 可能引用不同的范围,具体取决于上下文,建议您声明一个对象来保存您打算写入的属性(例如 $scope.data = {text: "foo "}; ) ,因此当 ng-model 试图写入值时(通过 ng-model="data.text"),它必须进行“读取"首先,沿着原型(prototype)链查看,直到它最终到达所需范围的“数据”属性(假设沿途没有其他范围具有该属性)。

此方法遵循 "always use the dot in ng-model"规则。

(旁注:另一种可能的方法是为 Controller 使用别名,假设它在您使用的 Angular 版本中可用)。

<div ng-controller="ExampleController">
    {{my.text}}
    <pane>
      <textarea ng-model="my.text"></textarea>
    </pane>
  </div>

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

关于javascript - ng-模型在 ng-transclude 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24701829/

相关文章:

c# - DataGridView 使用 DataSourceNullValue : enter either nothing, 或 nullValue

c# - 如何使用WPF绘制二叉 TreeView ?

javascript - 在固定位置将元素设置为屏幕大小的动画

javascript - 将 HTML 字符串解析为 DOM 并将其转换回字符串

javascript - 如何使用 Jquery 从中继器内的文本框中选择文本?

javascript - 我如何在 Angular JS 谷歌地图中传递嵌套的 json 数组对象

c# - .NET 数据绑定(bind)的跨线程问题

angularjs - 是否有一种内置方法可以在没有任何查询参数的情况下获取当前 URL?

javascript - 使用 AngularJS 检测选择列表值的变化

node.js - 用 Electron 打开一个 Express 应用程序(Nodejs)