- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为用户的警报数量设置一个计数器。如果我 console.log $scope.alerts 和 $scope.count,我可以看到两者都在更新,但是使用 {{alerts.length}} 或 {{count}} 作为 #msgCount 的值只会给我pageLoad 上的初始计数,并且当数组长度更改时不会更新。我做错了什么?
我的 Controller :
myApp.controller('globalAlerts', ['$scope', '$http', function ($scope, $http) {
$scope.alerts = [{
"type": "warning",
"msg": "This is a generic alert. It is best suited for one or two line messages."
},
{
"type": "danger",
"msg": "<strong>Past Due!</strong> You have an invoice <a class=\"invoice-link\" href=\"\">192607</a> that is past due. <a href=\"invoices.html\">View all invoices.</a>"
},
{
"type": "success",
"msg": "This green alert indicates something positive occurred. Doesn't that make you feel happy?"
},
{
"type": "info",
"msg": "This blue alert is another generic warning usually used to inform. Isn't it soothing?"
}
];
$scope.$watchCollection('alerts.length', function() {
return $scope.alerts.length;
}, true);
$scope.closeAlert = function(index) {
$scope.alerts.splice(index, 1);
};
$scope.dynamicPopover = {
templateUrl: 'partials/alerts/globalAlerts.html',
title: 'Recent Alerts'
};
}]);
和标记:
<div id="upperNav" ng-controller = "globalAlerts">
<a class="btn btn-link" id="msg" popover-placement="bottom" uib-popover-template="dynamicPopover.templateUrl" popover-title="{{dynamicPopover.title}}" >
<div class="badge badge-warning" id="msgCount">{{alerts.length}}</div>
ALERTS</a></div>
使用弹出框标记:
<div id="alertCntr" ng-controller = "globalAlerts">
<uib-alert ng-show="alerts.length" ng-repeat="alert in alerts track by $index" type="{{alert.type}}" close="closeAlert($index)">{{alert.msg}}</uib-alert>
<p ng-hide="alerts.length">You ain't got no more alerts, kid!</p>
</div>
最佳答案
对于其他用户:
HTML 指定每个 block 都有自己的 Controller 。这意味着两个 Controller 是独立的,不知道彼此的警报数组何时被触摸。
最简单的解决方案是嵌套 HTML,以便它们共享一个 Controller :
<div id="upperNav" ng-controller = "globalAlerts">
<a class="btn btn-link" id="msg" popover-placement="bottom" uib-popover-template="dynamicPopover.templateUrl" popover-title="{{dynamicPopover.title}}" >
<div class="badge badge-warning" id="msgCount">{{alerts.length}}</div>
ALERTS</a>
<div id="alertCntr">
<uib-alert ng-show="alerts.length" ng-repeat="alert in alerts track by $index" type="{{alert.type}}" close="closeAlert($index)">{{alert.msg}}</uib-alert>
<p ng-hide="alerts.length">You ain't got no more alerts, kid!</p>
</div>
</div>
编辑:
更新了 plnkr,它完全符合您的要求:http://plnkr.co/edit/AIwGi7eIzilsGGL7Us3G?p=preview
关于javascript - $watchCollection 未更新页面上的数组长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35872470/
更新 此问题已在 1.3.0 beta 中得到解决:请参阅commit 我有一个数组,我想监听更改并将新值与旧值进行比较。 $watchCollection (http://docs.angular
我使用 $watchcollection 来观察我的模型的变化。我像这样初始化了我的模型 $scope.feature = { additional: [], coll
我有两个数组,每个数组都有 bool 值,我尝试使用 $watchCollecion 函数在其中一个数组发生某些更改时显示一条消息,但由于某种原因它不起作用。 我想看看这个 example 有什么问题
我正在尝试为用户的警报数量设置一个计数器。如果我 console.log $scope.alerts 和 $scope.count,我可以看到两者都在更新,但是使用 {{alerts.length}}
我们有一个名称包含点 (.) 的属性。我知道这并不常见,但原因是这些是自动构建的,您可能会将其视为 key1.key2。 现在这个属性“key1.key2”的 watchCollection 失败了,
我有以下指令: app.directive('rickshawChart', function() { return{ $scope: { da
我正在使用 $watchCollection 来观察数组长度的变化。但是当我将任何项目添加到数组时它似乎不起作用。我哪里出错了? var app = angular.module('plunker',
我有一个嵌套数组: $scope.itinerary = [ [ {name:'x'}, {name:'y'}, {
我有一个了解一段代码的小查询。 我的印象是 $watchCollection 将监视数组 , 当根据以下语法作为参数传递时: $watchCollection(obj, listener); 然而,我
我正在尝试使用 $watchCollection 函数将表(ui 网格)与 Angular 中的另一个 View 连接起来。我需要 $watchCollection 来监视表中的文本框(过滤器区域),
有2 ways to watch a group of variables在 Angular 。但它们之间有什么区别呢? 他们似乎都做浅表。是否存在其中一种明显优于另一种的情况? 最佳答案 $watc
我使用三个输入复选框和 ngModel 指令来绑定(bind)到名为“props”的对象的属性。 我正在使用 $scope.$watchCollection 设置对“props”的所有属性(共有三个)
我有一个包含 3 个复选框值的 html 文件 并且在 Controller 中定义了一个 watchCollection,当复选框状态改变时它会被触发 $scope.$watchGroup([
我正在尝试使用来自 Controller 的 $scope.$watchCollection 来监控我拥有的服务。当我的 Controller 最初被调用时, watch 会被调用,但每次都不会。 我
这篇文章与:Is there a tidy way to define a large watch collection for AngularJS? 不同 我的代码是(service.js): va
当 $scope.$watchCollection 用于更改对象中的属性时,它仅评估第一级属性。当调用 $scope.$watchCollection 时,有没有办法强制 angular 评估第二级或
我在 AngularJS 中遇到一个问题,其中 $scope.$watchCollection() 抛出错误。我已将代码减少到与文档中的示例代码完全相同( http://docs.angularjs.
我正在编写的一些代码存在问题,这些代码应该利用我正在上传的文件。 问题说明 基本上,我正在工作的这个迷你项目有两个部分。第一部分是我编写的指令,用于监视文件输入并捕获正在上传的文件。然后将捕获的文件
对于监视对象作用域变量,将 $scope.$watch 与 objectEquality 设置为 true 还是 $scope.$watchCollection 更好? 对于使用 View 中的输入元
我在屏幕上有一个“添加项目”按钮,单击它可以将新项目添加到列表中。 我使用 $scope.$watchCollection 来观察返回所有可见项列表的函数。 当我点击“添加项目”按钮时,我收到无限摘要
我是一名优秀的程序员,十分优秀!