无法理解AngularJS中的一些代码

时间:2014-10-24 08:49:16

标签: javascript angularjs

我通过阅读一本书来学习AngularJS,但我仍然坚持使用本书中难以解释的一些代码行。

所以这个selectCategory()函数包含在ng-click指令

<a ng-click="selectCategory()">Home</a>

<a ng-repeat="item in data.products | orderBy:'category' | unique:'category'"
   ng-click="selectCategory(item)">

   {{item}}

</a>

此处还有过滤器,用于在触发ng-click指令时根据其类别过滤列表产品

ng-repeat="item in data.products | filter:categoryFilterFn">

这两个定义如下:

angular.module("sportsStore")
.controller("productListCtrl", function ($scope, $filter) {

    var selectedCategory = null;

    $scope.selectCategory = function (newCategory) {
        selectedCategory = newCategory;
    }

    $scope.categoryFilterFn = function (product) {
        return selectedCategory == null ||
        product.category == selectedCategory;
    }
});

我已经花了很多时间试图理解这些代码,但我仍然很困惑,特别是关于如何定义这两个函数。为什么$ filter也包含在参数中?你也可以解释这些定义,我真的输了。原谅我是个新手,非常感谢!!

1 个答案:

答案 0 :(得分:1)

这是一个非常糟糕的例子!!

应该是:

<a ng-click="selectCategory()">Home</a>

<a ng-repeat="item in data.products | orderBy:'category' | unique:'category'"
   ng-click="selectCategory(item.category)">

   {{item.category}}

</a>

因此,您可以从可用类别(产品的唯一类别)中选择一个类别,然后列出具有此类别的产品(ng-repeat =“item in data.products | filter:categoryFilterFn&gt;)

categoryFilterFn是一个过滤函数,因此列出了具有category == selectedCategory的产品,如果没有selectedCategory列出所有产品:)

希望这有帮助