小编use*_*187的帖子

如何显示过滤的ng-repeat数据的长度

我有一个包含许多对象(JSON格式)的数据数组.以下可以假设为此数组的内容:

var data = [
  {
    "name": "Jim",
    "age" : 25
  },
  {
    "name": "Jerry",
    "age": 27
  }
];
Run Code Online (Sandbox Code Playgroud)

现在,我将这些细节显示为:

<div ng-repeat="person in data | filter: query">
</div
Run Code Online (Sandbox Code Playgroud)

这里,查询被建模为输入字段,其中用户可以限制所显示的数据.

现在,我有另一个位置,我在其中显示当前显示的人/人数,即 Showing {{data.length}} Persons

我想要做的是,当用户搜索某个人并根据查询过滤显示的数据时,Showing...persons还会更改当前显示的人的值.但它没有发生.它始终显示数据中的总人数而不是过滤数据 - 如何获取过滤数据的计数?

javascript angularjs

435
推荐指数
8
解决办法
39万
查看次数

AngularJS:$ watch未被触发更改对象数组

我有一个表,用户可以选择根据某些列和这些列的某些值来过滤表中的行.跟踪此过滤器的对象结构如下所示:

$scope.activeFilterAttributes = [
    {
        "columnName": "city",
        "values": ["LA", "OT", "NY"]
    },
    {
        "columnName": "weather",
        "values": ["humid", "sunny"]
    }
];
Run Code Online (Sandbox Code Playgroud)

因此,数组中的对象包含"columnName"和"values"键."columnName"表示要为过滤器考虑的列,而"values"包含过滤器值.基本上,上面的数组将导致表中的行,其中city列包含"LA","OT"或"NY"作为值,而weather列包含"湿"或"晴天"作为值.不显示不包含这些值的其他行.

为了更好地理解这个对象,如果用户只希望在"city"列中看到那些"LA"或"NY"的行,则结果数组将如下所示:

$scope.activeFilterAttributes = [
    {
        "columnName": "city",
        "values": ["LA", "NY"]
    },
    {
        "columnName": "weather",
        "values": []
    }
];
Run Code Online (Sandbox Code Playgroud)

用户设置或删除这些过滤器.只要发生这种情况,就会更新上面的数组.此更新正确发生,我已经验证了 - 这里没问题.

问题出在$ watch()上.我有以下代码:

$scope.$watch('activeFilterAttributes', function() {
    //Code that should update the rows displayed in the table based on the filter
}}
Run Code Online (Sandbox Code Playgroud)

当$scope.activeFilterAttributes用户在UI中更新过滤器时,会正确更新,但在更新时不会触发$ watch.它是在应用程序加载时第一次触发但未来的更新对此没有影响.

我创造了一个小提琴来证明这一点:http://jsfiddle.net/nCHQV/

在小提琴中,$scope.info代表桌子的行,可以这么说;
$scope.data代表过滤器.
单击该按钮相当于更新过滤器(在小提琴的情况下 - 数据),从而更新表格中显示的行(在小提琴的情况下 - 信息).但是可以看出,单击按钮时信息不会更新. …

angularjs

18
推荐指数
2
解决办法
2万
查看次数

Font-Awesome - 图标旋转在隐藏然后显示时不旋转

当我的页面加载时,我icon-refresh + icon-spin通过将其display属性设置为none来隐藏图标.

现在,在执行某些操作后,我希望显示此图标.我.show()在图标上调用了jQuery的方法.但是,显示图标时,图标不再旋转.

如果我加载它而不是最初隐藏它,它会旋转.但不是在以后隐藏和显示的时候.

编辑:如果从标题中不清楚,我使用Font Awesome来显示图标

jquery font-awesome

16
推荐指数
2
解决办法
6508
查看次数

使用AngularJS的Facebook登录按钮

我正在尝试使用https://developers.facebook.com/docs/reference/plugins/login/上的文档将Facebook登录按钮添加到我的网站

现在,此按钮显示在视图中.仅当用户明确请求登录网站时才加载视图.

我使用的是HTML5版本.在第1步中,我被要求包含Javascript SDK - 我在标记之后立即执行此操作.它位于包含该ng-view指令的主页面中.

我将代码放置在视图中呈现登录按钮.问题是,如果我通过单击主页面中的登录按钮导航到视图,则视图不会呈现FB登录按钮.但是,如果我刷新页面(包含登录视图的页面),则按钮呈现.

我已经将Javascript SDK的代码移动到了登录视图中 - 无论是在呈现按钮之前还是之后,这也无法解决问题.仅在刷新登录视图时,才会呈现该按钮.

所以,
a)要么我需要知道为什么会发生这种情况和解决方案,要么
b)在AngularJS中刷新; 这就是我需要知道AngularJS在渲染之前刷新登录视图的方式,以便(我希望)登录按钮被渲染.

facebook-login angularjs

5
推荐指数
1
解决办法
6182
查看次数

AngularJS:无法从指令中访问范围

model.data 包含以下内容:

{
    "name": "Jamie",
    "age": 25
}  
Run Code Online (Sandbox Code Playgroud)

我的指令看起来像:

<my-directive data="model.data"></my-directive>  
Run Code Online (Sandbox Code Playgroud)

我已将该指令定义如下:

app.directive('myDirective', function(){  
    return {
        restrict: 'E',
        scope: {
            data: '='
        },
        templateUrl: 'grid.html',
        controller: function($scope) {
            console.log($scope);
            console.log($scope.data);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是console.log($scope)返回$ scope中的值.我可以看到它包含数据:

{
    $$asyncQueue: Array[0],
    $$childHead: null,
    ...
    ...
    data: Array[1]
}
Run Code Online (Sandbox Code Playgroud)

但是,console.log($scope.data)退货undefined.有什么线索的原因?

angularjs angularjs-directive

4
推荐指数
1
解决办法
2087
查看次数

NodeJS + ExpressJS,无法读取环境变量

我在Express.js中设置一个变量,如下所示:app.set('HOST', 'demo.sample.com');.但是,如果我尝试读取此变量,我会得到undefined输出.我正在阅读变量process.env.HOST.然而,如果我尝试使用它app.get('HOST'),我会得到正确的值.

我无法使用,app.get('HOST')因为我正在读取另一个文件中的变量 - 一个不包含对Express.js app变量的引用的文件.

如何使用该值process.env.HOST?

node.js express

3
推荐指数
1
解决办法
8356
查看次数

AngularJS - 错误:未知提供者:searchResultsProvider

编辑:我已经设法让我的单元测试运行 - 我将包含服务的代码移动到另一个文件和一个不同的模块,使这个新模块成为fooBar模块的要求,然后在调用每个"it"块之前,引入代码beforeEach(module(<new_service_module_name)).但是,我的应用程序仍然无法运行.控制台也没有错误.这是唯一仍然存在的问题 - 当我使用全局范围进行控制器定义时,应用程序可以工作,但是当我使用angular.module.controller时 - 它没有.

我有一个app.js包含以下内容的文件:

'use strict';

var app = angular.module('fooBar', []);

app.config(['$routeProvider', function($routeProvider) {
  $routeProvider.
  when('/', {
    templateUrl: 'partials/form-view.html',
    controller: FormViewCtrl
  }).
  when('/resultDisplay', {
    templateUrl: 'partials/table-view.html',
    controller: TableViewCtrl
  }).
  otherwise({redirectTo: '/'});
}]);

app.service('searchResults', function() {
  var results = {};

  return {
    getResults: function() {
      return results;
    },
    setResults: function(resultData) {
      results = resultData;
    }
  };
});
Run Code Online (Sandbox Code Playgroud)

我有另一个controllers.js包含以下内容的文件:

'use strict';

var app = angular.module('fooBar', []);

app.controller('FormViewCtrl', ['$scope', '$location', '$http', 'searchResults', 
    function …
Run Code Online (Sandbox Code Playgroud)

angularjs karma-runner

1
推荐指数
1
解决办法
7516
查看次数