【发布时间】:2018-08-20 19:52:41
【问题描述】:
我有一个表格,用于使用 RESTful api 在 ember 中更新 alumni 的详细信息。是否可以防止表单自动填充我之前在模型中的另一条记录对应的表单中输入的数据?
我的更新路由目录中有这些代码(我正在使用 pod-structure):
controller.js
# app/alumnis/update/controller.js
import Controller from '@ember/controller';
import { get, set } from '@ember/object';
export default Controller.extend({
firstName: null,
actions: {
updateAlumni(value) {
let firstName = get(this, 'firstName');
if(firstName) {
firstName = firstName.charAt(0).toUpperCase() + firstName.slice(1).toLowerCase();
this.get('store').findRecord('alumni', value).then(function(alumni) {
alumni.set('firstName', firstName);
alumni.save();
});
}
this.transitionToRoute('alumnis.show', value)
},
},
});
route.js
# app/alumnis/update/route.js
import Route from '@ember/routing/route';
import { set } from '@ember/object';
export default Route.extend({
model(params) {
return this.store.findRecord('alumni', params.id);
},
setupController(controller, model) {
set(controller, 'alumni', model);
}
});
template.hbs
# app/alumnis/update/template.hbs
<form class="alumniForm" {{action "updateAlumni" on="submit"}}>
<div class="form-group">
<h3>First Name : {{input name="firstName" type="text" value=firstName placeholder=alumni.firstName autocomplete="off"}}</h3>
</div>
<button class="btn btn-primary" {{action "updateAlumni" alumni.id}}>Submit</button>
</form>
router.js
# app/router.js
import EmberRouter from '@ember/routing/router';
import config from './config/environment';
const Router = EmberRouter.extend({
location: config.locationType,
rootURL: config.rootURL
});
Router.map(function() {
this.route('alumnis', function() {
this.route('show', {path: '/:id'});
this.route('add', {path: '/add'});
this.route('update', {path: '/:id/update'});
});
});
export default Router;
在每次重新加载后首次渲染update 路由时,不会自动填充任何表单字段。但是,一旦我们将数据输入到firstName 输入字段,它就会呈现到模型alumni 中任何其他记录的update 页面中的表单字段。
【问题讨论】:
-
你试过什么?这通常是浏览器功能或浏览器扩展功能,由浏览器决定是否尊重表单/输入上的
autocomplete="off"。 developer.mozilla.org/en-US/docs/Web/Security/… -
@NullVoxPopuli ,我已经尝试打开
autocomplete="off"并在隐身模式下访问route,但该字段甚至在单击表单中的输入框之前就已呈现 -
字段总是被渲染?我现在很困惑
-
该字段呈现为模型
alumni中任何记录的update路径中先前输入的值。占位符值是记录中的实际值,但该字段会自动填充为先前访问此路线时作为输入提供的数据。 -
我用 chrome 和 safari 都试过了。现在,我能够实现它。并感谢您的 cmets
标签: javascript ember.js