【问题标题】:Controller's property is not showing up on template控制器的属性未显示在模板上
【发布时间】:2014-11-26 02:43:03
【问题描述】:

我有一个用作用户注册页面的模板。它有电子邮件、密码、密码确认、名字和姓氏。然后,有一个按钮,它应该调用控制器中定义的动作。车把模板看起来像这样。

<div class="well">

    <form role="form">
        <div class='form-group'>
            {{input type='email' class='form-control' placeholder='E-Mail' value=email}}
        </div>

        <div class='form-group'>
            {{input type='text' class='form-control' placeholder='First Name' value=password}}
        </div>

        <div class='form-group'>
            {{input type='text' class='form-control' placeholder='Last Name' value=password}}
        </div>

        <div class='form-group'>
            {{input type='password' class='form-control' placeholder='Password' value=password}}
        </div>

        <div class='form-group'>
            {{input type='password' class='form-control' placeholder='Password Confirmation' value=passwordConfirmation}}
        </div>

        <button {{action 'signUp'}} class='btn btn-lg btn-default'>Sign Up</button>
    </form>

</div>

现在,只要出现验证错误(例如缺少电子邮件),我想在同一页面上呈现错误。为此,我的操作中有基本的验证规则,除此之外,还定义了另一个名为 signUpError 的属性。我的控制器看起来像这样。

Postr.SignUpController = Ember.Controller.extend({
    actions: {
        signUp: function(){

            var email = this.get('email');
            var password = this.get('password');
            var passwordConfirmation = this.get('passwordConfirmation');
            var firstName = this.get('firstName');
            var lastName = this.get('lastName');

            console.log(email);

            if(!email || !password || !passwordConfirmation || !firstName || !lastName){
                this.set('signUpError ', 'One or more field is missing!');
            }
            if(password !== passwordConfirmation){
                this.set('signUpError ', 'Password does not match!');
            }

            //console.log(this.get('signUpError'));
        }
    },

    signUpError: ''
});

并且,在表单的顶部,我添加了一个新的 HTML 元素来呈现错误。

{{#if signUpError}}
    <div class="alert alert-danger">
        {{signUpError}}
    </div>
{{/if}}

问题是...我无法让signUpError 出现:|有任何想法吗?

谢谢大家。

【问题讨论】:

  • 不确定这是否是问题所在,但在您的 `this.set('signupError ') 末尾有一个空格。也许这样可以解决问题?

标签: javascript ember.js handlebars.js


【解决方案1】:

问题是你的 this.set('signupError ') 有一个空格,所以你实际上并没有正确设置属性。

我已经在 jsbin 中重新创建了问题,没有空格问题可以正常工作。

this.set('signUpError', 'Password does not match!');

http://emberjs.jsbin.com/hicefefibe/1/

【讨论】:

  • 神圣的通心粉,谢谢!
猜你喜欢
  • 1970-01-01
  • 2014-07-05
  • 1970-01-01
  • 2020-11-02
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多