问题标签 [angularjs-digest]
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.
angularjs - 防止 Angular $watch 循环
我正在整理一个快速的资金输入,它会自动将小数点添加到输入的金额中。但是我遇到了一个问题,我的 $watch 函数永远循环然后出错。这就是我所拥有的:
任何建议,将不胜感激。
angularjs - 为什么 $digest() 不会从 Parse 回调中自动调用?
我有一个 select2 下拉列表,它绑定到我范围内的数据($scope.makes)。它在 ng-modal 中“生活”。
我在一个 Promise 中更新了 $scope.makes,这是一个 Parse.com 调用(parse.cloud.run),但之后它结束了 DDL 并没有被新数据引用。但是,如果我添加 $scope.$digest() 的调用,它就可以工作。这是为什么?
这是模态控制器的相关部分:
如果我删除最后一行 - 下拉列表不会被刷新。
这是相关的 Modal 的 HTML 部分
angularjs - $scope.$digest() 不填充 select2 下拉列表
我有 2 个使用 ui-select2 的下拉列表
在下拉列表“Makes”中选择一个值后,我正在激活一个手表,在其中我加载“Models”下拉列表的内容。然后,为了刷新 GUI 中的下拉列表内容,我调用 $scope.$digest() :
问题是使用$digest 时,第一个下拉列表的选定值变为空,没有它就不会刷新视图。
请问有什么建议吗?
javascript - 解决 Karma 单元测试中嵌套的 AngularJS 承诺
我尝试测试一个使用嵌套承诺的函数(假设这个函数不能更改)。为了处理这些承诺,我必须$rootScope.$digest()
至少打电话两次。我想出了这个工作解决方案,$digest()
每 10 毫秒调用一次。
问题是估计消化足够时间以解决所有承诺所需的超时持续时间。如果服务对例如 localstorage 进行真正的异步调用,情况会变得更加复杂。
还有其他方法可以解决这个问题吗?有没有办法获得所有剩余的承诺?
javascript - 尝试从 v1.2 升级时出现“TypeError:非法调用”
编辑:这似乎与 Chrome v43 有关,我降级到 v42 并且一切正常。
编辑:我已经在 Angular 的 Github 存储库上提交了一个问题。
似乎错误是
在 angular.js 源代码中按return logFn.apply(console, args);
行抛出的。12221
这是Chromium 错误的链接。
关于现在该做什么的任何提示?
我正在尝试将我的应用程序从 AngularJS v1.2 迁移到 v1.3 或 v1.4,但我正在TypeError: Illegal invocation
使用 Chrome(尝试过 win、osx 和 ubuntu)。
堆栈跟踪并没有真正帮助:
所以这似乎与 AJAX 请求有关,但我也得到:
我$interval
用来更新模型类(这是一个工厂,并通过设置这个类反映在视图中$scope.client
):
我觉得有问题$digest/$apply
。我已经花了几个小时调试这个,但仍然不知道发生了什么。
任何指向进一步调试的指针都非常感谢。
javascript - AngularJS:如何从控制台编辑 $scope?
我可以根据此处$scope
接受的答案访问变量。但是,我无法从控制台编辑它,即更改属性、调用函数等。这甚至可能吗?
这是我一直在尝试的测试代码:
如果我text
使用控制台编辑属性,它会改变,但视图不会改变:
如何$scope
从控制台更改值和属性,以便视图和所有依赖项也得到更新?
javascript - AngularJS / Firebase - 需要登录两次才能成功登录
我有简单的 AngularJS 应用程序并使用 Firebase OpenAuth 进行用户身份验证。这是来自 plunkr 的示例代码。
我必须单击两次才能从 Google 获得 authData。我不明白,为什么我无法在第一次点击时获取数据。
angularjs - 工厂内部 $http 对数据所做的更改不会反映到 DOM
我正在尝试基于对象创建动态表单。例如:如果给定,我希望生成的选择框将包含选项,否则工厂将使用 ajax 获取它们,如下所示:
标记:
控制器:
工厂:
数据( $scope.selects )按预期更新,但 DOM 没有,这可能意味着 refactor.options() 没有再次调用以响应更改。我试图通过将范围对象传递给工厂并在其上调用 $apply 来强制更新,但它不起作用。
我错过了什么?
angularjs - angular ui bootstrap datepicker 导致“infdig”
我正在尝试在我的应用程序中应用来自 angular ui 的日期选择器,但由于某种原因,它会导致以下错误:
错误:[$rootScope:infdig] 达到 10 个 $digest() 迭代。中止!观察者在最后 5 次迭代中触发:[] http://errors.angularjs.org/1.3.15/ $rootScope/infdig?p0=10&p1=%5B%5D
我不明白为什么会触发此错误,因为。在上面的链接中,描述如下:
当应用程序的模型变得不稳定并且每个 $digest 循环触发状态更改和后续的 $digest 循环时,就会发生此错误。Angular 会检测到这种情况并防止无限循环导致浏览器无响应。
我根本不明白这如何适用于我的情况。
如果我使用这样的常规输入字段:
没有问题,日期显示得很好,但是:
将导致错误。比我聪明的人可以给我一个关于我错过了什么的指针。我只是从后端加载日期并尝试将其显示为日期选择器中的当前日期。
/问候克里斯
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)
。即使以这种方式,我看到摘要循环适用于数组中的每个项目:(