我试图创建一个在每一列的顶部都有过滤器的表。
我无法弄清楚为什么Any过滤器可以工作,但单个colum过滤器不能工作。
我有代码@ http://plnkr.co/edit/6ghH02
我还尝试在设置ng-model之后编译元素,但不起作用。
有人能帮帮忙吗?
发布于 2012-12-10 05:18:42
如果去掉该指令并使用inputtext的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中的值必须是可赋值的变量。
发布于 2012-12-12 02:27:27
正如@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
https://stackoverflow.com/questions/13791036
复制相似问题