【问题标题】:$watch is not working [duplicate]$watch 不工作[重复]
【发布时间】:2015-01-20 02:36:07
【问题描述】:

在项目更改时不会调用手表。它在加载时工作,并正确加载地图。但是,当我通过下拉更改 event_type 时,它永远不会进入函数内部。我检查了concole.log

实际的event_type 确实发生了变化,它在屏幕上用{{ event_type.type }} 显示新值

$scope.event_type = { id: 0, type:'All' }
$scope.$watch( 'event_type', function(val) {
    $scope.markers = Events.venues(val.type)
    }, true)

【问题讨论】:

  • 我不认为你想要单引号。您可能还想将手表放在 event_type.type 而不是 event_type 上。
  • 它必须是表达式的单引号,添加 .type 使它根本不起作用
  • 我在测试时看到了。我发布的答案应该对您有所帮助。
  • 这很有意义,应该可以工作但仍然没有,我正在用新代码更新问题

标签: javascript angularjs


【解决方案1】:

我认为这叫做深潜或深度观察。无论如何,它是您要设置为 true 的 $watch 上的第三个参数。

您也可以将新值作为参数传入,而不是从 event_type 中读取。如下所示。

$scope.$watch( 'event_type', function(newVal) {
    $scope.markers = Events.venues(newVal.type)
}, true);

这是一个笨蛋:http://plnkr.co/edit/YMmVPKDMeUcK5Pvz2Z0z?p=preview

如果这里有什么不合理的地方,请告诉我。

【讨论】:

  • 这叫深度观看。这可能会有所帮助:stackoverflow.com/questions/14712089/…
  • 还是什么都没有,从来没有第二次进入函数
  • 您对手表的传递是否真实?这是这里的重要部分。 $scope.$watch('event_type', function() {..}, true);
  • 没关系,我从你的新代码中看到了你所做的。看起来 $watch 实际上工作正常,可能是绑定问题或其他问题。您能否制作一个 plnkr 来展示您想要完成的更多内容?
  • 会相当复杂,它使用下拉菜单通过 ng-model 获取值并将其传递给谷歌地图标记。
猜你喜欢
  • 2016-06-07
  • 1970-01-01
  • 1970-01-01
  • 2022-07-21
  • 2018-11-14
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多