【问题标题】:Angular equivalent of silverlight binding to an property of an elementSilverlight 绑定到元素属性的 Angular 等效项
【发布时间】:2014-02-27 22:50:39
【问题描述】:

在 silverlight 中,如果我在同一个用户控件中声明了两个 xaml 对象,我可以使用“ElementName”绑定选项将其中一个对象的属性绑定到另一个对象的属性,如下所示:

<Object1 x:Name="xObj1" Date="{Binding DateInViewModel}"/>
<Object2 Date="{Binding ProcessedDate, ElementName=xObj1}"/>

在这种情况下,对象 1 接收来自视图模型的日期并具有名为“ProcessedDate”的属性,其中包含输入日期的更改版本。对象 2 有一个名为“Date”的属性,该属性绑定到对象 1 的“ProcessedDate”。

如何在 Angular 中做类似的事情?

【问题讨论】:

  • 如果您能验证我的回答,那就太好了。

标签: javascript angularjs silverlight


【解决方案1】:

您可以使用非常简单的 ng-attr 指令。见documentation

在以下示例中,div 的 whatever 属性将绑定到输入值 (jsfiddle)。

<input ng-model='foobar'>
<div ng-attr-whatever="{{foobar}}"></div>

这里是更多complexe example using 指令。

【讨论】:

  • 我的理解是,上面的方法只有在 'foobar' 是控制器中的属性时才有效?我想绑定到另一个元素输出的属性,而不通过控制器。关于你的例子,我想做这样的事情
    。在 silverlight 的情况下,不需要在视图模型中声明一个属性来使其工作。
  • 绑定中的“ElementName”选项是您需要将绑定指向一个元素,而不是默认情况下指向数据上下文(即范围)的所有内容..
  • 最好有一个控制器来统治独立的指令。但是,控制器是完全可选的。看到这个updated jsfiddle
  • 我仍然不明白当两个对象都是自定义指令而不是输入或 div 时这将如何工作。假设我有这两个元素: 这行得通吗?我不确定如何使用自定义属性而不是 ng-model 来做到这一点。
  • 使用控制器并通过自定义指令隔离范围共享值(请参阅documentation)。说真的,控制器很重要,不要试图避免它们。更新:是的,这可行,但删除花括号并使用双绑定隔离范围(jsfiddle example 混合所有内容)。
猜你喜欢
  • 2010-12-11
  • 1970-01-01
  • 2012-01-31
  • 2011-02-15
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 2018-05-14
  • 2013-08-27
相关资源
最近更新 更多