当前位置:  开发笔记 > 编程语言 > 正文

AngualrJS - 在ng-click中的摘要周期后执行代码

如何解决《AngualrJS-在ng-click中的摘要周期后执行代码》经验,为你挑选了1个好方法。

我有一个有几个输入元素的表单.输入元素值设置为范围变量.有一个带有ng-click指令的按钮,它包含使用某些逻辑(从作用域变量调用其他方法)的代码,以通过作用域变量确定和设置输入元素值:



myApp.directive('...', function() {
    return {
        link: function(scope, element) {

        var setFormInputValues = function() {
            scope.variableToBeSetOnButtonClick = scope.objFromOtherDirective.getValue();
        };
        var submitForm = function() {
            $(element).find("form")[0].submit()
        };

}

这个问题是$ apply在执行所有ng-click函数之后才执行,因此在调用submit()时尚未设置输入值.

也许有更好的方法来做到这一点?我能找到的唯一解决方案是将一个$ watch放在variableToBeSetOnButtonClick上,它调用submit(),并尝试在该回调中取消注册$ watch,但这看起来很糟糕.



1> masa..:

$timeout()在提交表单之前尝试添加:

myApp.directive('...', function($timeout) {
    ...     
    var submitForm = function() {
        $timeout(function () {
             $(element).find("form")[0].submit();
        });
    };
}

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有