Angularjs 对英语中不同指令的不同行为的混淆

Angularjs 对英语中不同指令的不同行为的混淆,angularjs,Angularjs,我对不同指令的不同行为感到困惑。在下面的代码ng repeat中,只需要一个字符串,但ng source需要image作为表达式。有人能解释一下吗 <ul> <li ng-repeat = "image in product.images" > <img ng-src="{{image}}" /> </li> </ul> 要进一步澄清: 为什么ng repeat的语

我对不同指令的不同行为感到困惑。在下面的代码
ng repeat
中,只需要一个字符串,但
ng source
需要
image
作为表达式。有人能解释一下吗

<ul>
       <li ng-repeat = "image in product.images" >
                <img ng-src="{{image}}" />
       </li>
</ul>
要进一步澄清: 为什么
ng repeat
的语法不像:


ng repeat=“{image in product.images}}”

这确实是AngularJS指令的难点之一,在Angular 2+中已经解决了这一点:您需要仔细阅读指令的文档(或者它的源代码,如果没有很好的文档记录),以了解指令的期望

通常,当要传递的值是字符串(如图像URL或链接href)时,该指令不希望您传递表达式,您可以使用例如
ng src=“/images/foo.png”
直接传递静态字符串。如果希望该值是动态的,比如范围变量的值,可以使用插值:
ngsrc=“{{imagePath}}”

如果指令需要非字符串值(如布尔值、对象或特定的微语法,如ng repeat或ng options使用的语法),或者当指令需要传递的值始终是动态的时,则不使用插值,表达式始终是动态的。请注意,在这种情况下,需要通过以下方式传递文本字符串:
foo=“'static string'”


但它总是归结为指令设计中的选择,您需要阅读文档。

这确实是AngularJS指令的难点之一,在Angular2+中已经解决了这一点:您需要仔细阅读指令的文档(或其源代码,如果没有很好的文档),了解指令的期望值

通常,当要传递的值是字符串(如图像URL或链接href)时,该指令不希望您传递表达式,您可以使用例如
ng src=“/images/foo.png”
直接传递静态字符串。如果希望该值是动态的,比如范围变量的值,可以使用插值:
ngsrc=“{{imagePath}}”

如果指令需要非字符串值(如布尔值、对象或特定的微语法,如ng repeat或ng options使用的语法),或者当指令需要传递的值始终是动态的时,则不使用插值,表达式始终是动态的。请注意,在这种情况下,需要通过以下方式传递文本字符串:
foo=“'static string'”


但它总是归结为指令设计中的选择,您需要阅读文档。

这都是动态行为。 当您使用
ng repeat
时,您正在对预定义的集合进行迭代。没有什么动态。变量本身的值可以是动态的,但您可以放心,您将迭代同一个变量(或类似
[1,2,3,4]
的内联数组)

但是当您使用
ngsrc
时,您正在为该图像传递一些动态路径。Angular随后将在解析
{{image}
的值时添加
src
属性

你应该看看我们是如何传递参数的。
。这里的
template.url
不是您期望src拥有的实际路径。而是使用一个变量。如果您想传递精确路径,可以将其包含在
中,精确路径为字符串。e、 g:


请注意
'template1.html'
包含在表示字符串的单引号中,这里的template\u path是一个变量。

这都是动态行为。 当您使用
ng repeat
时,您正在对预定义的集合进行迭代。没有什么动态。变量本身的值可以是动态的,但您可以放心,您将迭代同一个变量(或类似
[1,2,3,4]
的内联数组)

但是当您使用
ngsrc
时,您正在为该图像传递一些动态路径。Angular随后将在解析
{{image}
的值时添加
src
属性

你应该看看我们是如何传递参数的。
。这里的
template.url
不是您期望src拥有的实际路径。而是使用一个变量。如果您想传递精确路径,可以将其包含在
中,精确路径为字符串。e、 g:


请注意
'template1.html'
用表示字符串的单引号括起来,这里的template_path是一个变量。

您面临什么问题?@PankajBadukale我已经编辑过以澄清这一点。请再看一看。
ng src
ng srcset
,和
ng href
理解双花括号
{{
}
插值。其他所有函数都不解析双花括号。“这只是AngularJS众多怪癖中的一个。”@georgeawg哦,我明白了。谢谢:)@georgeawg不,那完全不正确。这些指令的目的是防止用户在表达式尚未插值时单击链接或浏览器下载图像。您面临的问题是什么?@PankajBadukale我已对其进行了编辑以澄清。请再看一看。
ng src
ng srcset
,和
ng href
理解双花括号
{{
}
插值。其他所有函数都不解析双花括号。“这只是AngularJS众多怪癖中的一个。”@georgeawg哦,我明白了。谢谢:)@georgeawg不,那完全不正确。这些指令的目标是防止用户在表达式未插值时单击链接或浏览器下载图像