单击确认后Angularjs绑定不更新

时间:2018-05-25 14:48:19

标签: angularjs binding

我接受了一份维护和改进内部申请的工作后才开始学习ng1。

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

我的前任所遇到的解决方案是使用禁用的输入值,因为这些正确更新。然而,这是一个黑客,我的老板希望我纠正它。

请参阅下文,了解该问题的更基本示例:

 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将在视图中显示成功消息。然而,两秒钟之后,"消失了#34;消息将显示在控制台中,但确认消息在视图中没有相应的响应...

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

非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:2)

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

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

要:

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

请务必在控制器中注入$timeout