javascript - Ember 模板中的 "Rolling back"错误状态

标签 javascript ember.js ember-data

我的 Ember Controller 访问 JSONAPI 服务(使用 Ember 数据),如下所示:

    model: function(params) {
        return Ember.RSVP.hash({
            data: this.store.query('recipe', params),
            ...
        });
    },

params可以包含一个过滤字符串,如果格式错误,将导致服务器以 HTTP 代码 422 进行响应。我在同一个 Controller 中捕获此内容,如下所示:

    actions: {
        error: function(error, transition) {
            console.log('Retrieval error: ' + error.message);
            this.controller.set('filterValid', false);
        }
    }

然后在我的 Handlebars 模板中,我可以检查 {{filterValid}}我的 Controller 的属性,并可选择将样式应用于 <input>标签,通知用户错误。

但是: 一旦 filterValid属性已设置为 false,我似乎找不到正确的操作或 Hook 来将属性回滚/重置为 true当查询没有失败时。由于上述代码位于我的路由中,因此我无法直接访问 model 中的 Controller 功能。 (也不,根据我见过的模型/ Controller /模板图,应该我。)

最佳答案

我认为您可能正在寻找 setupController Hook 。它接收解析后的模型和 Controller 。

setupController: function(controller, model) {
   this._super(controller, model);
   controller.set('filterValid', true);
}

我不确定发生错误时是否调用该方法(我猜它没有被调用),但因为您只需要在事情正常时设置标志。我认为这对你有用。

关于javascript - Ember 模板中的 "Rolling back"错误状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34312315/

相关文章:

Ember.js:折叠/延迟昂贵的观察者或计算属性

ember.js - Ember data store.find() 在使用无效 ID 调用时创建空项目

javascript - 用于 HTML 讨论的 JS 组件,类似于 Google 文档

javascript - sails js 错误 : Handshake inactivity timeout

javascript - Ember.js - afterRender 在 CSS 完成之前触发

javascript - 在 ember js 和 mvc 中使用验证码

javascript - 使用 Ember.js 从 Post 请求接收服务器响应中的 JSON API

javascript - Ember 2,过滤关系模型(hasMany,belongsTo)并根据关系计算计算属性

javascript - HTML onmousedown/onclick 显示隐藏的 HTML

javascript - ASP.net C# 中的弹出计算器