首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >angular.js表过滤

angular.js表过滤
EN

Stack Overflow用户
提问于 2012-12-10 03:42:12
回答 2查看 2.4K关注 0票数 0

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

我无法弄清楚为什么Any过滤器可以工作,但单个colum过滤器不能工作。

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

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

有人能帮帮忙吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-10 05:18:42

如果去掉该指令并使用inputtext的ng-change属性,就可以做到这一点:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2012-12-12 02:27:27

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

代码语言:javascript
复制
<th ng-repeat="sortName in columnNames">
   <input type=text ng-model="$parent.search[sortName]"></th>

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

代码语言:javascript
复制
<div ng-init="search.name = ''; search.phone = ''"></div>

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13791036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档