问题标签 [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.
javascript - $watch 异步服务变量不起作用
嗨,我花了两天时间尝试根据异步 http 服务的响应来创建视图。但这对我不起作用。谁能帮我吗?
这里有基本思想的代码,但原来的有点不同:
angularjs - 如何正确使用隔离范围属性?
如何正确使用隔离范围属性?
我有一个指令,它是从页面控制器调用的,并带有一个item
传递给它的属性,例如<my-directive item="myItem"></my-directive>
,包含一个id
.
下面的代码将不起作用,因为它似乎$scope.item
在控制器中未定义..就像我使用它太快了一样。当我想使用它时,如何确定它实际上已设置?
javascript - spyOn 侦听器监视功能不起作用
当我尝试监视 $scope.$watch 的侦听器函数时,就像从不调用 spyOn
http://jsfiddle.net/b8LoLwLb/1/
我的控制器
我的测试
问题是,测试执行它并打印控制台日志,而不是监视函数。
我正在使用角度 1.4
javascript - ng-click 值更改 + $scope.watch 绑定无法正常工作
我有一个范围变量“$scope.searchType”,默认情况下等于“createdAt”。在我的 HTML 中,我有更改范围变量值的选项:
在我的控制器中,我有以下内容可以监听更改:
由于某种原因, $scope.$watch 永远不会被调用。我无法弄清楚这是如何不起作用的,因为它曾经如此。这是“$scope.searchType”声明:
javascript - 从指令更新值时未触发 $rootScope 上的 Angularjs $watchCollection
我遇到了一些问题,解决了我正在处理的一些 Angularjs 功能的问题。
基本思想是我有一个系统,在允许用户进入应用程序的下一部分之前,必须满足某些条件。一个例子是用户必须同时添加评论并单击链接(在真实应用程序中,这是文件下载)才能前进。
您可以在此处查看完整示例:https ://jsfiddle.net/d81xxweu/10/
我假设 HTML 是非常自我解释的,然后继续我正在使用我的 Angular 模块做的事情。我的应用声明和初始化如下:
这很简单。我将一个称为条件的对象附加到应用程序的根范围,以便我的指令和控制器可以访问它。我有一个指令可以呈现链接,一旦满足条件,用户就可以前进。在这个例子中,链接的文本从“Waiting...”变为“Click to continue”,表示我们可以前进。
因此,为了触发我们在此指令上设置的 watch 语句,我可以添加此控制器允许的注释:
前一个是我用于显示/添加评论的控制器。我在这里将 criteria1 设置为 true 以指示用户添加了评论。这实际上工作正常,并且按预期调用了 specialButton 指令中的 $watchCollection。
当我尝试从必须单击才能前进的链接中执行相同的操作时,就会出现问题。这是用指令呈现的,因为据我了解,在这种情况下,指令比控制器更有意义,这与注释列表/表单不同。
正如您在此处看到的,我传入 $rootScope 就像在控制器中一样。但是,当我将条件 2 设置为 true 时,不会触发 $watchCollection。
所以最终发生的事情是,如果我先添加评论,然后单击另一个按钮,我看不到 specialButton 更新其文本,因为第二个更改永远不会触发手表。但是,如果我先单击链接,然后添加注释,则 specialButton 会按预期更新。requiredLink的点击是更新数据,但不触发watch。因此,当我添加评论并触发 $watch 时,它会看到 BOTH 已设置为 true。
提前感谢您为解决此问题提供的任何帮助;我很感激你的时间。
angularjs - 更新列表时暂停 $watching 的 ng-repeat
我有一个带有显示一些标记的 MapBox 地图的页面,以及一个显示每个标记的一些信息的面板。为此,我将标记添加到markers
控制器拥有的数组中ctrl
。
然后,在我的 html 面板中,我有类似的东西
它可以工作,但是当我用 设置标记时map.setGeoJSON(x)
,它会为添加的每个标记触发事件on('layeradd')
。他们每个人都会自动触发一个$scope.$digest
. 有没有办法暂停观察数组markers
,添加所有标记,然后恢复它?
我尝试了这个解决方案(来自codewall),但它不起作用
[更新 1]
正如@YOU 建议的那样,我尝试使用 temp_array 进行修改。所以现在ng-repeat
手表ctrl.markers
,但我添加和删除项目ctrl.temp_markers
。当我完成更新时,我会这样做ctrl.markers=ctrl.temp_markers.slice(0)
。即使以这种方式,我看到摘要循环适用于数组中的每个项目:(
angularjs - 使用事件增强控制器
我目前正在为一家派对制作公司编写单页 Web 应用程序。
我的目标是创建一个“Office like”应用程序,允许用户打开一个新的“party document”并对其进行编辑。
每个文档都会有很多“内容页面”(如食物、公用事业、景点、供应商等),每个页面中都会有很多字段。
每个字段都有自己的限制,在添加、删除或编辑时应该发生这些限制。
我想创建一个基础 JavaScript 对象,所有其他字段对象都将从 . 它看起来像这样:
`
`
我的问题是我应该如何使用 Angular 的 $watch 系统来增加“OnChange”等事件。
javascript - AngularJS - $watch 的问题
如果用户是我商店网站上“高”组的成员,我正在尝试删除产品 SKU 上的“红色”和“蓝色”下拉列表选项。我想出的代码如下,但仅部分有效;唯一有效的是窗口警报。现在,如果我删除有关查找用户组的逻辑,那么它确实可以工作,但是用户必须设置颜色下拉列表的值才能开始。
javascript - $watchCollection 找出数组的哪一部分发生了变化
我有一个输入框,其中包含附加到数组的数据。
我试图确定我的数组中的数据何时发生变化,所以我有以下内容:
但是,我试图弄清楚我的数组的哪个特定部分发生了变化,也就是data.input1
在这种情况下。
如果我有另一个输入ng-model="data.input2"
,我想知道实际更改的是input2而不是input1
有没有办法做到这一点?
angularjs - 为什么我的观察者给我一个“无限 $digest 循环”错误?
我对观察者功能有一个奇怪的问题:
我收到此错误为:
我不确定如何避免这种情况。谁能帮我吗?