余烬应用程序不发布到服务器与余烬数据
Ember app not posting to server with Ember Data
我正试图将我的ember应用程序连接到后端节点服务器。现在,我有一个注册和登录表单,当用户提交任何一个表单时,它将通过使用Passport在节点中设置的身份验证过程。然而,当提交按钮被按下时,它只是重新加载当前页面,甚至不发送HTTP post请求。关于为什么会发生这种情况/如何解决它的任何想法?
这是我的适配器:
import DS from "ember-data";
var ApplicationAdapter = DS.RESTAdapter.extend({
host: 'http://localhost:8080'
});
export default ApplicationAdapter;
这是我的注册控制器:
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
new: function() {
console.log('creating new user...');
var model = this.get('user');
user = this.get('store').createRecord('user', {
title: model.get('title'),
password: model.get('password')
});
user.save().then(function(data) {
// Clear the form.
Ember.$(':input').val('');
});
},
}
});
这是我的模型:
import DS from 'ember-data';
export default DS.Model.extend({
username: DS.attr('string'),
password: DS.attr('string')
});
格式如下:
<div class="row text-center">
<h1>Signup</h1>
</div>
<form>
<div class="row">
<div class="medium-6 medium-centered columns">
{{input value=username type="text" placeholder="Username"}}
</div>
</div>
<div class="row">
<div class="medium-6 medium-centered columns">
{{input value=password type="password" placeholder="Password"}}
</div>
</div>
<div class="row">
<div class="medium-6 medium-centered columns">
{{input class="button" type="submit" value="Signup"}}
</div>
</div>
</form>
好的,这里似乎有一些问题。
首先,看看你发布的控制器,有一些事情看起来不正确:
- 从未声明
user
变量 - 您尝试从控制器
user
属性get
,但它从未定义 - 您尝试使用
Ember.$(':input').val('');
清除表单,这实际上没有任何意义,如果输入绑定到模板。
我们将从清理模板开始,这将推动对控制器的改进:
<div class="row text-center">
<h1>Signup</h1>
</div>
<form>
<div class="row">
<div class="medium-6 medium-centered columns">
{{input value=username type="text" placeholder="Username"}}
</div>
</div>
<div class="row">
<div class="medium-6 medium-centered columns">
{{input value=password type="password" placeholder="Password"}}
</div>
</div>
<div class="row">
<div class="medium-6 medium-centered columns">
<button class="button" type="submit" {{action 'createUser'}}>Signup</button>
</div>
</div>
</form>
主要问题似乎是你使用{{input}}
帮助按钮,这真的没有任何意义。{{input}}
帮助器用于输入文本。我们还将动作绑定到被点击的按钮上,这就是你想要的行为。
现在控制器:
import Ember from 'ember';
export default Ember.Controller.extend({
// Username for the new user
username: '',
// Password for the new user
password: '',
actions: {
// Create a new user
createUser() {
const username = this.get('username');
const password = this.get('password');
this.get('store').createRecord('user', {
username,
password
}).save()
.then(() => {
this.send('clearForm'); // Invokes the `clearForm` action on the controller
})
.catch(() => {
// Do some kind of error handling if the creation fails
});
},
// Clear the form
clearForm() {
this.set('username', '');
this.set('password', '');
}
}
});
现在我们有了一个定义了两个属性的控制器,用于保存新用户的用户名和密码。它们被绑定到模板中的输入字段,我们对它们进行操作,既可以将值从模板中取出,也可以再次清除它们。
您有一个提交按钮,默认情况下执行post请求。您可以执行以下操作:
<form {{action 'new' on='submit'}}>
<div class="row">
<div class="medium-6 medium-centered columns">
{{input value=user.username type="text" placeholder="Username"}}
</div>
</div>
<div class="row">
<div class="medium-6 medium-centered columns">
{{input value=user.password type="password" placeholder="Password"}}
</div>
</div>
<div class="row">
<div class="medium-6 medium-centered columns">
<button class="button" type="submit">Signup</button>
</div>
</div>
</form>
这基本上是说拦截提交事件并调用动作。
请注意,我还将user.
添加到您的输入值中,否则您将从控制器获得this.get('username')
等
相关文章:
- 使用JSP从服务器检索和显示图像
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 客户端服务器REST API captcha实现
- 正在将base64 jpeg从input-type=file上传到服务器
- Webpack开发服务器和React服务器端渲染
- 提示使用服务器端事件处理程序激活JavaScript
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 如何使用Socket.io将命令从客户端发送到服务器
- jQuery blueimp文件上传:将N-1个文件上传到IE中的服务器
- 使用jasmine模拟对服务器的调用
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 通过ajax将坐标传递到php服务器端,并在处理后检索到javascript
- 如何使用Javascript将空数组发送到PHP服务器
- 如何在HTML中显示服务器对象变量
- 如何配置分析以将数据发送到我自己的服务器
- 我无法使用angularJs($http)访问服务器
- 如何检测第三方广告服务器请求
- 如何:浏览器将JSON发送到服务器
- 余烬应用程序不发布到服务器与余烬数据