【问题标题】:Angularjs binding not updating after clicking confirm单击确认后Angularjs绑定未更新
【发布时间】:2018-11-05 00:15:09
【问题描述】:

在接受一份维护和改进内部应用程序的工作后,我刚刚开始学习 ng1。

我发现了一些实例,其中表中的值在单击确认时没有更新(在某些情况下重置为零。)但是,它们在控制台中更新。此外,在值重置为零后,当您再次更新输入值时,字段会立即恢复其正确值。

我的前任提出的一个解决方案是在这些值正确更新时使用禁用的输入。然而,这是一个 hack,我的老板希望我更正它。

有关该问题的更基本示例,请参见下文:

 coeficienteFactory.saveProjectCoeficient(vm.id_project, vm.coeficient)
            .then(function succesCallback(response) {

                console.log('true!!!');
                vm.confirm = true;
                setTimeout(function(){ vm.confirm = false; console.log("disappears!!!")}, 2000);

            }).catch(function errorCallback(response) {  
                console.log(response)
            });

上面的例子会触发vm.confirm,并且通过ng-show在视图中会出现一条成功消息。然而,两秒钟后,“消失”消息将出现在控制台中,但确认消息在视图中没有相应响应......

这显然是我的一个根本性误解,我必须快速学习!

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: angularjs binding


    【解决方案1】:

    您需要使用 Angular 版本 - $timeout - 这会导致摘要循环。变化:

    setTimeout(function(){ vm.confirm = false; console.log("disappears!!!")}, 2000);
    

    收件人:

    $timeout(() => {
        vm.confirm = false;
        console.log('disappears!!!');
    }, 2000);
    

    一定要在你的控制器中注入$timeout

    【讨论】:

    • 这在给出的更简单的示例中有效。非常感谢。但是,它不适用于主要问题。我应该创建一个提供清晰示例的新帖子吗?
    • @jamesbcn 如果您遇到 $timeout 无法解决的其他问题,那么我会单独发帖。
    猜你喜欢
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    相关资源
    最近更新 更多