Angularjs 为什么<;ui gmap窗口>;谷歌地图中的元素?

Angularjs 为什么<;ui gmap窗口>;谷歌地图中的元素?,angularjs,google-maps,angular-google-maps,Angularjs,Google Maps,Angular Google Maps,我有一个关于插件的元素的问题。Windows元素文档中的示例源代码为元素内部的使用ng non-bindable属性。显然,为了使角度绑定在页面上正确呈现,这是必要的。文档中没有明确说明这一点,所以我想知道为什么这个属性是必需的,特别是因为它清楚地表明,带注释的HTML元素中的角度文本不会被角度文本解析 为了举例说明,这是my HTML partial中的一段代码(假设此windows元素作用域中的属性模型具有名称和描述字段): 然后窗口的文本将正确呈现。它会说“位置1:这是位置1所在的位置。”

我有一个关于插件的元素的问题。Windows元素文档中的示例源代码为
元素内部的
使用
ng non-bindable
属性。显然,为了使角度绑定在页面上正确呈现,这是必要的。文档中没有明确说明这一点,所以我想知道为什么这个属性是必需的,特别是因为它清楚地表明,带注释的HTML元素中的角度文本不会被角度文本解析

为了举例说明,这是my HTML partial中的一段代码(假设此windows元素作用域中的属性模型具有名称和描述字段):

然后窗口的文本将正确呈现。它会说“位置1:这是位置1所在的位置。”


所以再一次,我想知道为什么这里需要ng non-bindable。这将极大地帮助我更好地理解这个Angular库,也许是整个Angular库。

基本上,这可以归结为ui gmap手工编译模板

在标准角度下,如果您有以下内容:

<directive>
   <some-html>{{someBinding}}</some-html>
<directive>

{{someBinding}}
这通常意味着“指令”是转包内容的,因此“someBinding”绑定到“指令”实例化的范围,而不是“指令”内部范围

但是,在ui gmap的情况下:

<ui-gmap-windows>
   <some-html>{{someBinding}}</some-html>
</ui-gmap-windows>

{{someBinding}}
范围应该是创建的每个窗口,而不是ui gmap窗口实例化的范围。因此,如果您没有ng non bindable,那么范围将是ui gmap windows实例化,并且someBinding将不存在

本质上,ui gmap使用transcluded元素作为模板应用于每个实例化的窗口对象,但如果angular进入其中并将该元素绑定到错误的范围,则ui gmap无法重新绑定到正确的范围

希望这能为你澄清一点


另外,除非需要同时显示多个窗口,否则不应该使用ui gmap窗口。使用单个ui gmap窗口并绑定到活动标记。

如果使用
,如何将窗口绑定到活动标记?@Derek朕會功夫 将处理程序附加到标记,并根据标记更改更改窗口绑定到的对象。
<directive>
   <some-html>{{someBinding}}</some-html>
<directive>
<ui-gmap-windows>
   <some-html>{{someBinding}}</some-html>
</ui-gmap-windows>