【发布时间】:2014-02-14 00:23:51
【问题描述】:
我有一个带有数据数组的简单 Angular 应用程序:
app.js
var myApp = angular.module('myApp', []);
myApp.controller('Ctrl', function ($scope) {
$scope.data = [
{name: "Alice", age: 28},
{name: "Bob", age: 55},
...
];
});
index.html
<input type="text" ng-model="data.search">
<table>
<tbody>
<tr ng-repeat="row in data | filter:data.search">
<td>{{ data.name }}</td>
<td>{{ data.age }}</td>
</tr>
</tbody>
</table>
现在,我想开始使用firebase 服务来体验酷炫的三向绑定。所以我做了这样的事情:
app.js
var myApp = angular.module('myApp', ['firebase']);
myApp.controller('Ctrl', function ($scope) {
var ref = new Firebase("https://<myapp>.firebaseio.com/");
// assume there is already data in here similar to above
$scope.data = $firebase(ref);
});
当然现在我的搜索过滤器坏了,因为$scope.data 是一个对象而不是一个数组。我当然可以转换数据,但这会破坏自动 3 向绑定。
所以我的问题是 - 如何在保持三向关系的同时将过滤器应用于这些数据?
【问题讨论】:
-
那么
$scope.data来自Firebase的时候怎么看(没用过) -
类似:
{"-JFhWFuhkviwWDb2Ud23":{"food":"Mussels","name":"Roy"},"-JFhWS6PUxI3S-MLfFHm":{"food":"Burgers","name":"Terry"}} -
呸,真丑。我真的看到了 2 个选项.. 一个函数来转换数据并将其重新应用于范围,或者创建一个自定义过滤器函数(我相信这可能需要一个数组)
-
是的 - 我对自定义过滤器进行了一些尝试,但无法使其正常工作。
-
我认为转换可能是你最好的选择,我可以发布一个快速的 3 行函数来解决问题