我试图在每列的顶部创建一个带过滤器的表。
我无法弄清楚为什么Any过滤器正在工作但不是单个colum过滤器。
我有代码@ http://plnkr.co/edit/6ghH02
我还尝试在设置ng-model后编译元素,但它不起作用。
有人可以帮忙吗?
答案 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>