Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ember Handlebar helper options.inverse undefined不是一个函数_Javascript_Ember.js_Handlebars.js - Fatal编程技术网

Javascript Ember Handlebar helper options.inverse undefined不是一个函数

Javascript Ember Handlebar helper options.inverse undefined不是一个函数,javascript,ember.js,handlebars.js,Javascript,Ember.js,Handlebars.js,因此,我有一个模板,需要根据方法的返回值显示/隐藏一些文本。我搜索并注意到一个人应该使用把手助手来实现这一点。因此,我在控制器中添加了一个resetPasswordhelper。options.fn(此)部件工作正常。options.inverse(这个)没有。它抛出普遍存在的JS错误uncaughttypeerror:undefined不是函数 模板/重置密码。hbs: <div class = "container"> {{#resetPassword}} <

因此,我有一个模板,需要根据方法的返回值显示/隐藏一些文本。我搜索并注意到一个人应该使用把手助手来实现这一点。因此,我在控制器中添加了一个
resetPassword
helper。
options.fn(此)
部件工作正常。
options.inverse(这个)
没有。它抛出普遍存在的JS错误
uncaughttypeerror:undefined不是函数

模板/重置密码。hbs:

<div class = "container">
  {{#resetPassword}}
      <h4>Password has been reset</h4>
      <h5>Your new password is: <b>{{password}}</b></h5>
  {{else}}
      <h4>Something went wrong! </h4>
      <h5>The password has not been reset! Please try again later.</h5>
  {{/resetPassword}}
</div>
export default Ember.Controller.extend({

  token:       null,

  init: function ()
  {
    this._super();
    Ember.Handlebars.registerHelper('resetPassword', function (options)
    {
      var token = this.get('token');
      var result = false;
     /* Ember.$.ajax({
        type:        "POST",
        url:         "/reset_password",
        contentType: "text/html",
        dataType:    "json",
        async:       false,

        beforeSend: function (request)
        {
          request.setRequestHeader("Authorization", token);
        },

        success: function (data, textStatus)
        {
          this.set('password', data.password);
          result = true;
        },

        error: function (data, textStatus)
        {
          result = false;
        }
      });*/
      if (result)
      {
        return options.fn(this);
      }
      return options.inverse(this);
    });
  }
});

因此,由于JS和余烬纯粹是垃圾,这里有一个解决方法:

  {{#if resetPassword}}
      <h4>Password has been reset</h4>
      <h5>Your new password is: <b>{{password}}</b></h5>
  {{else}}
      <h4>Something went wrong! </h4>
      <h5>The password has not been reset! Please try again later.</h5>
  {{/if}}
 resetPassword: function ()
                   {
                     var self = this;
                     var token = this.get('token');
                     var result = false;
                     Ember.$.ajax({
                       type:        "POST",
                       url:         "/api/users/reset_password",
                       contentType: "text/html",
                       dataType:    "json",
                       async:       false,

                       beforeSend: function (request)
                       {
                         request.setRequestHeader("Authorization", token);
                       },

                       success: function (data, textStatus)
                       {
                         var responseUser = data["users"][0];
                         self.set('password', responseUser.password);
                         result = true;
                       },

                       error: function (data, textStatus)
                       {
                         result = false;
                       }
                     });
                     return result;
                   }.property()