angular.js表过滤

时间:2012-12-09 19:42:12

标签: angularjs

我试图在每列的顶部创建一个带过滤器的表。

我无法弄清楚为什么Any过滤器正在工作但不是单个colum过滤器。

我有代码@ http://plnkr.co/edit/6ghH02

我还尝试在设置ng-model后编译元素,但它不起作用。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

如果你摆脱了指令并使用输入[text]的ng-change属性,你可以这样做:

function TestController ($scope) {
    $scope.valueChanged = function (name, value) { 
        if (!$scope.search) {
            $scope.search = {};
        }
        $scope.search[name] = value;
    }
};

<body ng-controller="TestController">

<th ng-repeat="sortName in columnNames">
    <input type=text ng-model="value" ng-change="valueChanged(sortName, value)">
</th>

关于原始代码不起作用的答案的简短版本是ngRepeat creates a new scope,ng-model中的值必须是可分配的变量。

答案 1 :(得分:0)

正如@Ryan指出的那样,ng-repeat的嵌套作用域就是其中之一。编写控制器方法的另一种方法是使用子作用域的$ parent属性来访问父作用域中的搜索属性:

<th ng-repeat="sortName in columnNames">
   <input type=text ng-model="$parent.search[sortName]"></th>

与@ Ryan的解决方案一样,不需要指令。 但是,需要创建/初始化其他搜索属性:

<div ng-init="search.name = ''; search.phone = ''"></div>

http://plnkr.co/edit/wT34vh?p=preview