Angularjs angular.js表格过滤

Angularjs angular.js表格过滤,angularjs,Angularjs,我试图创建一个表,每个列的顶部都有一个过滤器 我无法理解为什么任何过滤器都能工作,但单个Column过滤器却不能 我有密码@ 我还尝试在设置ng模型后编译元素,但它不起作用 有人能帮忙吗?如果您去掉指令并使用输入[text]的ng change属性,您可以这样做: function TestController ($scope) { $scope.valueChanged = function (name, value) { if (!$scope.search) {

我试图创建一个表,每个列的顶部都有一个过滤器

我无法理解为什么任何过滤器都能工作,但单个Column过滤器却不能

我有密码@

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


有人能帮忙吗?

如果您去掉指令并使用输入[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>
功能测试控制器($scope){
$scope.valueChanged=函数(名称、值){
如果(!$scope.search){
$scope.search={};
}
$scope.search[name]=值;
}
};

关于您的原始代码为什么不能工作的答案的简短版本是,ng模型中的值必须是一个可赋值变量

正如@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>