我正在开发一个大量使用 AngularJS 的项目,并且我正在使用一些预先编写的代码向页面添加更多功能。
link: ($scope, element, attrs)->
$scope.$watch("model", (newValue, oldValue)->
if(newValue != oldValue && newValue != "")
openModal($scope, event)
refreshShiftList($scope)
,false)
这是 $watch 方法,它表示如果有任何变化...执行此操作。当您单击页面上的某个元素时,它应该启动模式。 (它在 Chrome 上以及其他地方都做得很好。)但在 Firefox 上,它显然没有捕获(事件)。 - 该代码之前适用于所有浏览器,但我在此处添加了该事件,该事件适用于 Chrome,而不是 FF,因此这是此代码中已更改的变量。 - 如果我向此事件添加点击,它会起作用,但很困惑。
link: ($scope, element, attrs)->
$scope.$watch("model", (newValue, oldValue)->
if(newValue != oldValue && newValue != "")
FIREFOX = /Firefox/i.test(navigator.userAgent);
if FIREFOX
$('.fc-event').click (event) ->
openModal($scope, event)
refreshShiftList($scope)
else
openModal($scope, event)
refreshShiftList($scope)
,false)
此外,这种方法只能起到一半作用。它可以工作,但只有在第一次单击后才会设置绑定(bind)......我希望它从一开始就可用。我在这里做错了什么?或者有什么好方法可以让 Firefox 检测到该事件。
我不知道,我可以创建一个 fiddle ,因为这不是常规的 js。
最佳答案
更改代码以不再出现在咖啡中会导致以下结果:
{
link: function($scope, element, attrs) {
return $scope.$watch("model", function(newValue, oldValue) {
if (newValue !== oldValue && newValue !== "") {
openModal($scope, event);
return refreshShiftList($scope);
}
}, false);
}
}
我在任何地方都没有看到事件变量,并且很惊讶它在 Chrome 中竟然可以工作。您对这次事件有何期待?
关于javascript - Angular 和 FF 中的 $watch 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24143580/