2017-02-17 29 views
0

我使用的是AngularJS 1.5.0,我遇到了一些我无法弄清的事情,尽管有很多谷歌和调试。Angular Interpolation Only只接受1个特定参数

如果我定义一个控制器并注入提供者,我可以使用下面的代码来获得一些动态输出;

var x = $interpolate('Hello {{name}}!'); 

调用x({});将输出Hello !
调用x({name: 'FizzBuzz'});将输出Hello FizzBuzz!

但是,如果我再尝试将它设置为一个不同的变量;

var z = $interpolate('Hello {{abc}}!'); 

它立即给出这个错误;

Uncaught TypeError: (intermediate value) is not a function 

这几乎就像$interpolate只能设置一次。真的很困惑,请帮忙。

编辑:这似乎是与Chrome开发人员工具的问题。如果我在定义插值调用的线路(即var x = $interpolate(...))之后中断并尝试执行新呼叫(如var y = $interpolate(...)),那么这就是所有情况都会下降的地方,并且会得到未捕获类型错误。

+0

你确定你的示例代码是正确的? x({'FizzBu​​zz'})不应该起作用,因为它需要一个属性名称。你能提供一个可行的例子,像plunkr或jsfiddle吗? –

+0

对不起,更新了示例调用。我不知道如何做jsfiddle中的注射部分......否则我会很乐意这样做。我刚刚通过chrome开发工具/控制台也注意到了这一点。不是100%确定如何在jsfiddle中复制它。 – Trent

回答

1

试试这个,这应该工作。

var x = $interpolate('Hello {{abc}}!'); 

x({abc: 'FizzBuzz'}); 

编号:https://docs.angularjs.org/api/ng/service/ $插值

+0

Err,道歉,这就是我的意思,我输入它太快(现在编辑)。内插的初始设置很好,当你尝试改变它似乎掉下来的字符串时。 – Trent

+0

检查此http://jsfiddle.net/prasanthbendra/qz5xbkn5/是你在找什么? –

+0

是的,在调试时,Chrome Dev Tools控制台似乎很奇怪。该jsfiddle虽然工作正常。 – Trent

相关问题