【发布时间】:2014-04-23 16:13:34
【问题描述】:
我有一个使用自定义视图的模板(Emblem)。 模板本身是一种简单的形式,必须输入(并因此设置)密码。到目前为止,我一直在使用标准的 Ember.TextField 视图,但是,我决定向用户提供一些有关密码实际有多好的信息。
我创建的自定义视图如下所示:
div.password-strength-view
Ember.TextField type="password" classNames="form-control" value=view.password placeholder=view.passwordPlaceholder
div.strength-bar class=view.barClass
背后的javascript:
App.PasswordStrengthView = Ember.View.extend({
templateName: 'views/password-strength-view',
password: '',
passwordPlaceholder: '',
_passwordScore: 0,
strengthUpdater: function() {
var calc = function(pw) {
return ( Math.random() * 4 + 1 ); // TODO: add zxcvbn
};
var strength = calc(this.get('password'));
this.set('_passwordScore', strength);
return strength;
}.property('password'),
barClass: function() {
var score = this.get('_passwordScore');
return 'score-' + score;
}.property('_passwordScore')
});
我现在想根据密码输入的变化更新.strength-bar 的宽度(通过score-x 类完成)。我还希望能够在我的模板中使用视图并将视图的密码属性设置为映射 (1) 到输入的值和 (2) 到控制器的属性。
在我的模板代码中我尝试了这个:
App.PasswordStrengthView#edituser-pw1 password=newPassword passwordPlaceholder="Super secret"
如果我更改控制器中的newPassword 值,它会反映在视图中。视图本身不会注册任何更改。关于如何实现这一点的任何帮助?我听错了财产吗? view.password 也不起作用。
【问题讨论】:
标签: javascript ember.js ember-data