javascript - Angular 和 FF 中的 $watch 方法

标签 javascript angularjs angularjs-directive

我正在开发一个大量使用 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/

相关文章:

javascript - 为什么dbs调用后数组变量没有保存-node js

javascript - 在 fullcalendar v4 事件中添加按钮

javascript - 格式化时间 Hh :mm:ss Z in javascript

javascript - AngularJs:默认情况下未选择单选按钮

javascript - angularjs指令错误:[nonassign]

javascript - OverCls 在 IE11 中不起作用

javascript - 使用 Promise 进行 Jasmine 异步测试

html - 使 html 标签从 Angular 指令模板中的 json 正确渲染

javascript - AngularJS 指令 - 指定回调的默认值

javascript - 指令 : $observe, 类属性更改仅捕获一次