angular 注意 angular-传单指令

angular watch for angular-leaflet-directive

我试图将 $watch 放在 angular 中的一个值上,以根据控制器的指令设置不同的控件,并且我尝试跟随 angular-leaflet-directive 中的领导使用 leafletScope.$watch("variable").

我添加了一个新的 $watch,因为它是一个对象:

leafletScope.$watch("controls", function(controlOpts) {...}, true)

然后我在控制器中调用它使用:

angular.extend($scope, {
    controls: {}
}

这是为了初始化控件,因为这似乎是必需的。

然后我稍后在事件中调用它:

$scope.controls = { new object }

如果我在控件中记录更改,然后也在 $watch 事件中记录更改,我得到以下序列:

$scope 更改后手表未被调用这一事实表明我做错了。

任何人都可以告诉我在哪里,或者我在简单测试中是否得出了错误的结论。

如果我这样做并更改我的 "center" 模型,我得到:

这原来是 angular-leaflet-directive 和我使用的 html minifier 之间的冲突 html-minifier。传单控件的 angular-leaflet-directive 表示法是 controls 所以在我的 html 文件中我有

<leaflet center="centre" controls="controls" layers="layers" width="1200px" height="800px"></leaflet>

html-minifier 将 controls="controls" 设为布尔属性,并使用 collapse boolean attributes 标志将其缩减为

<leaflet center="centre" controls layers="layers" width="1200px" height="800px"></leaflet>

这不好。我会要求这在 angular-leaflet-directive 中有更好的记录,或者他们将控件的名称更改为 leaflet-controls 或其他东西以避免将来像我这样毫无戒心的人发生这种情况。

顺便说一句,手表上的 true flag 太耗资源了,我把它去掉了,它仍然有效..