Angularjs 数据绑定仅在onfocus/blur上更新

Angularjs 数据绑定仅在onfocus/blur上更新,angularjs,Angularjs,我有一个奇怪的问题 我将ng model应用于我的输入 我点击获取IP 我将控制器的属性设置为与ng型号匹配 输入应该更新 这是应该发生的事情。然而,我有一个奇怪的问题,在我取消焦点/模糊输入之前,数据绑定不会得到更新 我已经和AngularJS一起工作了几个月了(虽然是用TypeScript),我以前从未经历过这种情况。我可以看到有多个问题 不要在控制器中执行dom操作,angular已经提供了添加单击事件和执行ajax的方法。所以不要将jQuery和angular代码混用 在代码中,范围在

我有一个奇怪的问题

  • 我将
    ng model
    应用于我的输入
  • 我点击
    获取IP
  • 我将控制器的属性设置为与ng型号匹配
  • 输入应该更新
  • 这是应该发生的事情。然而,我有一个奇怪的问题,在我取消焦点/模糊输入之前,数据绑定不会得到更新


    我已经和AngularJS一起工作了几个月了(虽然是用TypeScript),我以前从未经历过这种情况。我可以看到有多个问题

  • 不要在控制器中执行dom操作,angular已经提供了添加单击事件和执行ajax的方法。所以不要将jQuery和angular代码混用
  • 在代码中,范围在摘要周期中没有更新,这就是输入值没有更新的原因
  • 所以

    var-app=angular.module('app',[]);
    app.controller('controller',['$http',
    函数($http){
    this.ip=“”;
    this.getIP=()=>{
    $http.get('https://api.ipify.org/?format=json)。成功((回应)=>{
    this.ip=response.ip;
    })
    }
    }
    ]);
    
    
    获取IP
    
    测试:{vm.ip}


    存在多个问题

  • 不要在控制器中执行dom操作,angular已经提供了添加单击事件和执行ajax的方法。所以不要将jQuery和angular代码混用
  • 在代码中,范围在摘要周期中没有更新,这就是输入值没有更新的原因
  • 所以

    var-app=angular.module('app',[]);
    app.controller('controller',['$http',
    函数($http){
    this.ip=“”;
    this.getIP=()=>{
    $http.get('https://api.ipify.org/?format=json)。成功((回应)=>{
    this.ip=response.ip;
    })
    }
    }
    ]);
    
    
    获取IP
    
    测试:{vm.ip}


    可能是因为更改未在摘要循环中发生。哪个是有角度的版本used@ArunPJohny那个摘要循环是什么样子的?谷歌对此毫无帮助。可能是因为这种变化不是在摘要循环中发生的。哪个是有角度的版本used@ArunPJohny那个摘要循环是什么样子的?谷歌帮不上忙。所以问题是,我使用的是常规jQuery而不是AngularJS的$http?太棒了,所以使用
    $http
    会自动为我更新值?@Mortenmolder是的,因为它是AngularJS的一部分,它知道启动摘要循环-这很好。谢谢!手动设置此项仍然很新:)谢谢!问题是,我使用的是常规jQuery而不是AngularJS的$http?太棒了,所以使用
    $http
    会自动为我更新值?@Mortenmolder是的,因为它是AngularJS的一部分,它知道启动摘要循环-这很好。谢谢!手动设置此项仍然很新:)谢谢!
    var app = angular.module('app', []);
    app.controller('Controller', function() {
        this.ip = "";
    
        $("#getIP").on("click", () => {
            $.get("https://api.ipify.org/?format=json", (response) => {
                this.ip = response.ip;
            });
        });
    });