我想实现我们可以通过输入用户名的第一个字符来搜索用户名的功能。我需要使用 Javascript 来创建自定义 html。
有没有做过这件事的人可以帮助我?
在此存储库的示例中,用户组合框Rally.ui.combobox.UserComboBox根据前几个字符动态搜索匹配值。此默认功能会在输入第二个字符后显示预期值。
var u = Ext.create('Rally.ui.combobox.UserComboBox',{
id: 'u',
project: project,
fieldLabel: 'select user',
listeners:{
ready: function(combobox){
this._onUserSelected(combobox.getRecord());
},
select: function(combobox){
this._onUserSelected(combobox.getRecord());
},
scope: this
}
});
this.add(u);
},
如果您想加载所有用户(不要将选择限制为特定项目的团队成员和编辑),您可以使用Rally.ui.combobox.Combobox而不是 Rally.ui.combobox.UserComboBox,并将模型设置为User
. 但要解决只有当前用户填充组合框的默认行为,请使用过滤所有用户的过滤器。在下面的例子中ObjectID > 0
使用。该组合框将由独立于项目选择器的所有用户填充。此片段不是上述自定义应用示例的一部分:
{
xtype: 'rallycombobox',
fieldLabel: 'select project',
storeConfig: {
autoLoad: true,
model: 'User',
filters:[
{
property: 'ObjectID',
operator: '>',
value: 0
}
],
sorters: [
{
property: 'UserName',
direction: 'ASC'
}
]
}
}
您将需要使用 Web 服务 API。这就是我将如何做到的......
API 不允许您在过滤器中指定字符的位置,但您可以要求它存在于名称中的某个位置,该过滤器将如下所示:
[{
property : "FirstName",
operator : "contains",
value : "A" //Whatever letter you're looking to start with
}]
现在,加载商店后,使用第二个函数将记录过滤为仅以 您的角色开头的记录:
store.filterBy(function(item) {
return item.get("FirstName")[0] === "A";
});
希望这可以帮助 :)