0

我试图$watch根据控制器的指令设置角度值以不同地设置控件,并且我尝试使用leafletScope.$watch("variable").

我添加了一个新$watch的具有相等比较的对象,因为它是一个对象:

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

然后我使用以下方法在控制器中调用它:

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

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

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

$scope.controls = { new object }

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

  • 记录控制$watch事件
  • $scope.control记录更改事件
  • 没有更多的日志

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

谁能告诉我在哪里,或者如果我在我的简单测试中得出了错误的结论。

如果我做同样的事情并改变我的“中心”模型,我会得到:

  • 中央$watch事件
  • $scope.center记录更改事件
  • 使用新值记录中心$watch事件
4

1 回答 1

1

结果证明这是 angular-leaflet-directive 和我使用的 html minifier 之间的冲突html-minifier。传单控件的角度传单指令符号controls在我的 html 文件中是如此

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

html-minifier 将 controls="controls" 作为布尔属性,并使用折叠布尔属性标志将其减少为

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

这不好。我会要求在 angular-leaflet-directive 中更好地记录这一点,或者他们将控件的名称更改为传单控件,或者避免这种情况在未来发生在像我这样毫无戒心的人身上。

顺便说一句,事实证明手表上的真正标志太耗费资源了,我把它取下来了,它仍然有效。

于 2015-04-22T10:03:39.487 回答