来自jQuery的$ setDirty()不起作用

时间:2018-03-22 15:27:17

标签: angularjs

我创建了一个包装jQuery元素的指令,该指令被绑定到一个包含一些回调函数的对象,如下所示:

vm.treeEvents = {
    check_node: function(node, selected){
        vm.form.$setDirty();
        ...
    },
    uncheck_node: function(node, selected){
        vm.form.$setDirty();
        ...
    }
};

在指令发布链接功能中我有:

if (scope.tree.treeEvents.hasOwnProperty(evt)) {
    scope.tree.treeView.on(evt.indexOf('.') > 0 ? evt : evt + '.jstree', scope.tree.treeEvents[evt]);
}

因此,只要触发treeEvents范围绑定中声明的事件,就会执行回调函数,然后将表单设置为dirty状态。

当我这样做时,我注意到表单没有传递到脏状态,除非我滚动页面或点击表单中的某个元素。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

这是一个常见的<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true" internalLogLevel="info" internalLogFile="c:\temp\internal-nlog.txt"> <extensions> <add assembly="NLog.Web.AspNetCore"/> </extensions> ... 问题,因为你AngularJS触发“在Angular的世界之外”,你应该让jQuery通过调用{{Angular来了解它1}}在事件处理程序内部。

更多信息,请阅读$scope.$apply文档。

答案 1 :(得分:0)

我使用scope.$evalAsync();

修复此问题