Ng只显示互动的更新
Ng-show only updating on interaction
我在Angular的项目中一直在努力(对它来说很新),没有什么大问题,但遇到了一些我无法解决的问题。
我有一个允许用户创建帐户的表单。在整个表单中,我都会为表单可能包含错误的地方发送错误消息(例如,密码不够长等)。在除一个区域外的每个区域,模板都会按照我的预期进行更新,不仅在这个表单上,而且在项目中的其他表单上。
罪犯是这个家伙:
<div id="account-exists" ng-if="createAccountForm.$valid">
<span class="error"
ng-show="error301"
translate>
general.validations.account_exists
</span>
</div>
对于ng-if
,div被正确地插入到DOM中,子跨度保持不变,但它仍然包含ng-hide
类。error301
是一个布尔值,我根据服务器返回的数据在作用域上设置,使用开发工具可以看到它实际上正在更新到true
。问题是,模板不会自动更新以显示错误。但是,如果单击,它将更新。
我认为$scope.$apply()
可能会有所帮助,但它冻结了模板。检查DOM可以发现,它确实有帮助,因为它在幕后的行为正如预期的那样,控制器中的JS代码仍然运行,并且DOM得到了正确的更新。我的模板中有什么明显的遗漏吗?具体来说,为什么它会点击更新?有人在$scope.$apply()
上经历过模板冻结吗?
肯定不能解决$scope.$apply()
冻结模板引起的根本问题,但我至少能够通过直接使用CCD_ 8,以便在没有激活摘要循环的情况下移除未被移除的ng隐藏。
我更想知道为什么会发生这种情况,但现在,很高兴知道作为一种变通方法,这符合我的目的,而且只要切换错误的状态,我就可以在需要时简单地将元素和remove("ng-hide");
或add("ng-hide");
作为目标。
如果使用对象,它可能会起作用。我无法解释为什么,但据我所知,这很有帮助。
ng-show="errors.error301"
然后在控制器中
$scope.errors = {
error301:false
}
...
...
...
$scope.errors.error301 = true;
- 如何在不刷新页面的情况下更新显示框
- 更新URL时使用Javascript函数显示日期
- 选择单选按钮时显示更新按钮
- ReactJS组件中显示的视频未更新
- 求和变量,并不断显示和更新它
- 网格中的更新值不会显示在javaspring控制器上
- 如何更新和显示变量
- javascript 显示字符剩余更新与按钮按住
- 事件侦听器更新就绪在加载时未显示确认,而更新实际存在
- 通过FTP更新网站,但仍显示旧内容
- FabricJS CurvedText对象(扩展)在更新间距和文本属性时未显示
- 根据输入范围更新显示的文本量
- 根据输入范围更新显示的文本量
- 协作编辑:document.getElementById 不更新显示
- meter.value 更新有效,但不更新显示的“悬停”值
- Vue.js $set不更新显示
- 更新显示在 HTML5 画布上的 JavaScript 变量的值
- innerHTML未更新显示
- 如何使用jquery隐藏/更新/显示具有相同ID的多个实例
- 如何用0-100的上拖更新显示范围元素值