我是ember js的新手。我有一个表格&当用户点击提交时我想检查用户名&用户输入的密码已经在我的模型/数据库中。我试过以下,但它没有用。请帮帮我...
模板
<h2>Welcome to my blog</h2>
<form {{action 'exist' on="submit"}}>
<dl>
<dt>User Name:<br> {{textarea value=uName cols="20" rows="1"}}</dt>
<dt>Password:<br> {{textarea value=passw cols="20" rows="1"}}</dt>
</dl>
<button type="submit" class="btn btn-primary">Login</button>
</form>
模型
import DS from 'ember-data';
export default DS.Model.extend({
FirstName: DS.attr('string'),
UserName: DS.attr('string'),
Password: DS.attr('string'),
PermissionList: DS.attr('array')
});
路线
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return this.store.find('user');
}
});
控制器
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
ght: function () {
var uName = this.get('uName');
var passw = this.get('passw');
if (this.store.find('user', {
userName: this.get('uName')
})) {
alert('Already exist');
}
}
}
});
//为每个输入显示此警报。即使它们不在模型中
答案 0 :(得分:0)
因为store.find()
总是返回一个作为对象的promise,if
条件总是求值为true。您应该做的就是等待承诺解决并进行检查,如
// ...
var uName = this.get('uName');
this.store.find('user', {
userName: uName
}).then(function(user) {
if(user) {
alert('Already exist');
} else {
}
});
// ...
答案 1 :(得分:0)
此表单看起来像登录表单。如果我的假设是正确的,如果用户已经登录,则不会显示此表单(在这种情况下,会话将具有用户信息)。如果用户未登录,则必须显示表单。我认为您不需要在商店中搜索用户。只需将用户发送/保存到服务器,然后让用户在服务器端查找逻辑并相应地发送响应。在ember方面,你可以通过处理承诺来显示存在的结果。
如果您的用例不同,您可以使用查询(对于多个记录)。和queryRecord用于单个记录
从文档粘贴的副本
// GET to /persons?filter[name]=Peter
this.store.query('person', { filter: { name: 'Peter' } }).then(function(peters) {
// Do something with `peters`
});
// GET to /persons?filter[email]=tomster@example.com
this.store.queryRecord('person', { filter: { email: 'tomster@example.com' } }).then(function(tomster) {
// do something with `tomster`
});
如果没有帮助,移动设备上的//会添加代码