【问题标题】:AngularJS one-way binding on custom directiveAngularJS单向绑定自定义指令
【发布时间】:2016-04-19 15:10:03
【问题描述】:

我正在使用 AngularJS highcharts (https://github.com/pablojim/highcharts-ng)

我有这个配置,我需要确保它只绑定一次。我在 AngularJS 上查找了单向绑定,它说如果我使用的是 AngularJs 1.3(我是),我需要使用 ::。但我不确定如何在自定义指令上使用它。

 <highchart config="configtemp"></highchart>

我尝试了类似的方法,但它不起作用

 <highchart config=":: configtemp"></highchart>

【问题讨论】:

  • 您能否进一步解释一下“它不起作用”的确切含义。根据我在下面的评论,使用:: 确实会阻止属性config 的值发生变化,所以如果highchart 指令正在收集新的配置数据,它不是来自这个范围值。

标签: javascript angularjs highcharts highcharts-ng


【解决方案1】:

在这方面,自定义指令的工作方式与角度指令相同。 AngularJS highcharts 有一个隔离范围:

scope: {
    config: '=',
    disableDataWatch: '='
  },

所以它的范围将包括分配给 html 中这些属性的值。因此

<highchart config=":: configtemp"></highchart>

将意味着在指令范围内scope.config 将等于::configtemp。由于您拥有'::',因此configtemp 的值不会像您建议/预期的那样从它的第一个值更改(更好地称为一次性绑定)。 (Example of this in plunker form)。

Highcharts 确实有一些额外的逻辑,但最终它是内部配置 is derived from this attribute/scope value

如果没有更多信息,我无法建议什么“不起作用”。

【讨论】:

  • 我想为多个图表使用一个配置,可以吗?
  • jsfiddle.net/u40vs8hk - 是的,虽然图表数据来自配置上的series 属性,所以如果你不能动态设置它(由于一次绑定)你最终会同一张图表两次。希望对您有所帮助。
  • 我最终得到了相同的图表。我认为它不会起作用,但感谢您的帮助
猜你喜欢
  • 2019-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 2017-08-01
  • 2014-06-24
  • 1970-01-01
相关资源
最近更新 更多