问题标签 [angularjs-watch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
233 浏览

angularjs - 你能重复使用 $scope.$watch

我找到了一些我想复制/粘贴并在两个控制器中使用的代码。它注视着一些东西。

而不是复制/粘贴,我想把它放在一个服务中并使用来自两个控制器的服务,如下所示:

现在,如果我这样做,它不会知道是什么$scope,对吧?(根据一些阅读,无论如何它不会让我这样做。

不过,我想说,如果你有这项服务,你就会得到这只手表

有一个提示我可以这样做:Passing current scope to an AngularJS Service

所以我拿了他的例子,修复了它,scope.watch 在那里工作,但现在我不能在手表内设置其他范围变量。我只是不知道足够的javascript来做到这一点,但我很接近。我真的认为它可以使用正确的语法......

这个片段的关键特性是作用域是不同的作用域。它不像单例。

0 投票
1 回答
1106 浏览

javascript - scope.$watch 不会在变量更改时触发

我在下面有以下代码片段。我遇到的问题是,只要 modal.isOpen 的值设置为 true,$watch 语句就不会触发。我试图避免使用 scope.$apply。我在这里做错了什么......

Angular 指令中的内部链接函数:

0 投票
2 回答
1876 浏览

javascript - 更改值时AngularJS'$ watch'不会触发

我有一个必须以横向查看的网络应用程序。

为此,我创建了一个检查innerWidthand的函数,innderHeight如果宽度大于高度,那么快乐的日子。这在我加载页面时非常有效,但我也可以在resize事件触发时检查方向。

所以我的代码流程是 -

  1. 在触发resize事件调用时$scope.getOrienttion()
  2. 计算当前方向并返回结果
  3. 监视$scope.getOrienttion()使用 a的值的变化watch并更新 的值$scope.orientation

上面的第 1 步和第 2 步似乎工作正常,但我watch从未检测到更改,$scope.getOrienttion()并且仅在页面加载时触发。我一定是做错了什么,谁能帮我找出问题所在。

这是相关的AngularJS -

这是具有条件类集的 HTML,具体取决于$scope.orientation(可能不相关,但以防万一)的值 -

0 投票
2 回答
587 浏览

angularjs - 指令范围.$watch 在控制器功能后调用

所以我有一个控制器和指令。我无法理解为什么我的控制器在我的指令之后运行。我已经搜索堆栈试图找到答案,但似乎大多数答案都是个案。

我的控制器最简单的形式就是这样

当我单击我的 ng-click 按钮时,我将转到 gotoLocation 范围函数并重新定义 $scope.initAddress。我的HTML如下:

现在当我查看我的指令时,我正在使用

现在,当我单击按钮时,它会运行到控制器和 $scopes.initAddress 并且不会点击 $scope.watch。当我再次点击它时,它首先点击 $scope.watch 然后它转到我的控制器并相应地更新。我怎样才能改变它,以便它先击中控制器,然后 $scope.watch 捕捉控制器中的变化。而不是先运行 $scope.watch 然后运行控制器。

谢谢您的帮助

0 投票
3 回答
161 浏览

javascript - 控制器中的 $watch 不会在将项目推入指令中的数组时触发

publish.selected_tags我在指令和控制器之间有一个双向绑定变量。

$watch在控制器中保留了该变量:

我面临的问题是,当我将一个项目推入selected_tags列表时,$watch不会触发:

但是,当我分配 selected_tags给一个数组$watch时,控制器中的会被触发:

为什么会这样?$watch如果我想推动一个元素,我怎样才能让我开火?

0 投票
1 回答
1582 浏览

javascript - AngularJS $watch 在 if-block 中不起作用

我发现,我的角度脚本正在工作:

但如果我添加一个 if 语句则不会:

试试看: http ://codepen.io/anon/pen/jWBEVM

但我不明白为什么。有已知问题吗?有人可以帮忙吗?

0 投票
1 回答
166 浏览

javascript - $watch 检查在 AngularJS 范围内定义的变量

我有以下指令来显示警报,所以我想在显示变量更改为星号运行超时时捕获我该怎么做?

仅第一次调用链接函数,但所有变量显示、消息和类型都未定义

指令代码

html指令代码

控制器示例

html代码

0 投票
2 回答
547 浏览

javascript - $watch 没有在 angularjs 的选项卡内调用?

这是我在 Plunker 上的示例

在我的示例中,我创建了两个输入文本框,一个在选项卡外部,另一个在内部。对于两者,我都创建了一个手表功能。外面的工作正常,但选项卡内的监视功能不起作用。两个地方都有相同类型的编码,只是我不知道为什么一个工作而另一个不工作。

谁可以帮我这个事?

0 投票
2 回答
1887 浏览

javascript - 检测谁更改模型(用户输入与控制器)

我有一个连接到模型的输入。此外,输入具有$watch模型的指示。

模型有两种变化方式。

  1. 用户将在文本框中输入。
  2. 代码会改变它(不管是什么原因)

我的问题是

有没有办法在指令中找出谁更改了模型、用户交互或代码?

例子:

http://jsbin.com/vufawur/edit?html,js,输出

更新

示例 2:

0 投票
1 回答
5371 浏览

javascript - $scope.$watch 只触发一次

我在我的控制器中设置了以下观察者:

embeds这应该在更改时触发。我有以下函数来检查我的所有嵌入式推文和 Facebook 帖子是否已为页面加载。加载所有推文或 Facebook 帖子后,它会embeds在一个$timeout块内更新以触发摘要循环。

我遇到的问题是我的观察者只在我设置它时触发一次。我已经尝试绑定embeds$scope/或观看embeds.twitterembeds.facebook但观察者只触发一次。