我尝试使用angularJS进行搜索输入以搜索地址簿中的姓名,但我无法理解问题:
这是我的控制器应该包含所有当前名称:
addressbook.controller('addressBookController', function ($scope) {
$scope.names = [];
});
这是我的转发器,它应该显示与搜索输入中的查询匹配的名称:
<li data-ng-repeat="name in names | filter: query">{{name}}</li>
以下是将联系人添加到Firebase数据库的功能:
addContact: function() {
var firstName = document.getElementById('fname').value;
var lastName = document.getElementById('lname').value;
dbContactsRef.push({firstName: firstName, lastName: lastName});
}
但是我也希望这会将名字和姓氏推送到$scope.names
数组(例如"Tom Hanks"
),这样我的转发器就可以遍历它。我确定这很简单,但是我在绘制空白并且我在谷歌上的查询没有答案。或者,如果有更好的方法,请告诉我。
答案 0 :(得分:1)
这是您订购的地方
<li data-ng-repeat="name in names | filter: query | orderBy: 'toString()'">{{name}}</li>
如果您的函数位于控制器范围之外的对象中,则可以执行
addContact: function() {
var firstName = document.getElementById('fname').value;
var lastName = document.getElementById('lname').value;
dbContactsRef.push({firstName: firstName, lastName: lastName});
var scope = angular.element(yourElementWitController).scope();
///OR -- angular.element(document.getElementById('address-book')).scope()
scope.names.push(firstName+' '+lastName);
scope.$apply();
}
angular.element()允许您访问应用于元素的角度范围。这是一个使用document.getElementById()的工作示例:
更新2
http://jsfiddle.net/ck9vdkan/3/
orderBy过滤器错误。它需要一个字符串。在这种情况下,我们使用一个简单的字符串数组。因此,我们将每个字符串对象的'toString()'成员称为orderBy。
更新3 * 搜索已添加。 'query'是一个字符串属性,在这种情况下由搜索框的ng-model绑定(在控制器的范围内)。 filter指令将以“查询值”开头过滤项目* 这是:http://jsfiddle.net/ck9vdkan/4/