Bootstrap 提前输入 Parse.com
Bootstrap Typeahead with Parse.com
我正在尝试使用 typeahead
和 Parse.com 结果。我认为 Parse
returns JSON
对象,但似乎以下方法无法识别它。任何人都可以发现什么问题吗?或者也许有更简单的方法让它工作(最后我希望能够搜索每个对象的两个字段)。
到目前为止我得到这个(感谢这个:https://github.com/bassjobsen/Bootstrap-3-Typeahead):
function queryListy(){
Parse.Cloud.run('queryList', {}, {
success: function(result) {
var $input = $('#query');
$input.typeahead({source:result,
autoSelect: true});
$input.change(function() {
var current = $input.typeahead("getActive");
if (current) {
// Some item from your model is active!
if (current.name == $input.val()) {
// This means the exact match is found. Use toLowerCase() if you want case insensitive match.
} else {
// This means it is only a partial match, you can either add a new item
// or take the active if you don't want new items
}
} else {
// Nothing is active so it is a new value (or maybe empty value)
}
});
},
error: function(error) {
console.log(error);
}
});
}
当我用 [{id: "someId1", name: "Display name 1"}, {id: "someId2", name: "Display name 2"}]
代替 result
时,它起作用了,所以基本机制似乎是正确的。
Parse 不会 return 对象以您可以直接使用的形式出现。您需要在需要的每个 属性 上调用 get
:
var mappedObjects = [];
result.forEach(function(parseObject){
mappedObjects.push({
id: parseObject.id, //id is special, you don't need get
name: parseObject.get("name"), //generic fields need get
});
});
$input.typeahead({source:mappedObjects, ...
如果您愿意,可以在您的云代码中执行此映射,这样您的客户端代码就不需要了。
我正在尝试使用 typeahead
和 Parse.com 结果。我认为 Parse
returns JSON
对象,但似乎以下方法无法识别它。任何人都可以发现什么问题吗?或者也许有更简单的方法让它工作(最后我希望能够搜索每个对象的两个字段)。
到目前为止我得到这个(感谢这个:https://github.com/bassjobsen/Bootstrap-3-Typeahead):
function queryListy(){
Parse.Cloud.run('queryList', {}, {
success: function(result) {
var $input = $('#query');
$input.typeahead({source:result,
autoSelect: true});
$input.change(function() {
var current = $input.typeahead("getActive");
if (current) {
// Some item from your model is active!
if (current.name == $input.val()) {
// This means the exact match is found. Use toLowerCase() if you want case insensitive match.
} else {
// This means it is only a partial match, you can either add a new item
// or take the active if you don't want new items
}
} else {
// Nothing is active so it is a new value (or maybe empty value)
}
});
},
error: function(error) {
console.log(error);
}
});
}
当我用 [{id: "someId1", name: "Display name 1"}, {id: "someId2", name: "Display name 2"}]
代替 result
时,它起作用了,所以基本机制似乎是正确的。
Parse 不会 return 对象以您可以直接使用的形式出现。您需要在需要的每个 属性 上调用 get
:
var mappedObjects = [];
result.forEach(function(parseObject){
mappedObjects.push({
id: parseObject.id, //id is special, you don't need get
name: parseObject.get("name"), //generic fields need get
});
});
$input.typeahead({source:mappedObjects, ...
如果您愿意,可以在您的云代码中执行此映射,这样您的客户端代码就不需要了。