【问题标题】:AngularJS $scope won't update when ng-model is updated更新 ng-model 时,AngularJS $scope 不会更新
【发布时间】:2014-03-22 06:13:38
【问题描述】:

我有以下html

<input id="zoom" name="zoom" style="width:100px" type="text" ng-model="user.zoomlvl">

当我运行下面的内容时,它会更新上面的 html 输入字段

google.maps.event.addListener(map, 'zoom_changed', function() {
    mapZoom();
});
function mapZoom(){
    valZoom = map.getZoom();
    $('#zoom').val(valZoom);
}

但zoom_changed 更新输入字段后,$scope.user.zoomlvl 仍然不会更新。

【问题讨论】:

  • 刚刚也看到了与此相关的其他问题。正如我怀疑你正在尝试使用一些第三方 JS 库,在这种情况下谷歌地图,你应该搜索一下有几个 AngularJS 谷歌地图的包装器实现(指令)你可以包含在您的项目并根据需要进行修改。

标签: jquery html angularjs angularjs-scope


【解决方案1】:

如果您使用的事件不是 Angular 的一部分(例如 zoom_changed),那么它们不会像 ng-click 那样在最后运行 $scope.$apply()。这就是您的$scope 未更新的原因。因此,在您的活动中,您需要添加$scope.$apply()

function mapZoom(){
    valZoom = map.getZoom();
    //$('#zoom').val(valZoom);
    // This is also probably better
    $scope.user.zoom1v1 = valZoom
    $scope.$apply();
}

【讨论】:

  • 有没有办法在 Angular 控制器之外更新它?
  • 是的,但它可能需要使用具有正确依赖注入的服务。
猜你喜欢
  • 2015-03-08
  • 2016-10-17
  • 1970-01-01
  • 2014-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多