为什么一些角度命令使用{{}}?

时间:2015-08-11 02:41:27

标签: angularjs

这两者之间有什么区别(为什么{{}}中的一个和#34;中的一个?")?

<body ng-controller="StoreController as store">

<img ng-src="{{store.product.images[0]}}" />

哦,我想我现在看到了。 Store控制器作为存储是一个函数,store.product.images [0]是一个字符串,对吗?

1 个答案:

答案 0 :(得分:2)

那么为什么ng-controller指令不同?好吧,它只是编写指令ng-xxx位)的方式。对于这个答案,它可能有点深入,但是值得研究如何创建自定义指令(参见https://docs.angularjs.org/guide/directive),以及如何将数据参数传递给它们。

差异归结为ng-controllerng-src指令如何期望其参数。

当某些内容介于{{}}之间时,您可以将其视为向Angular标识此属性值在传递给指令之前需要插值。插值是一种在字符串中编译占位符的形式,它是ng-src期望传递的字符串。因此,为了给它产品图像的字符串值,它需要使用{{}}

因此,在您的示例中,{{store.product.images[0]}}可能会被插入(将文本替换)插入到"\content\image1.jpg"之类的内容中。

ng-controller将自己解析值StoreController as store,它只是它所知道的语法。因此,它只是想要按原样读取属性值,而不进行预处理/插值。

我已对此进行了简化,但您可以随时在https://docs.angularjs.org/api/ng/service/$interpolate查看更多详细信息。

我希望这是有道理的,我并没有把这个问题弄糊涂。