EmberJS - 路由从拒绝中恢复



可以将 promise 拒绝对缓存到 model hook 中,该 hook 可以转换为 fulfills,这不会暂停转换。

语法

Ember.Route.extend ({
   model() {
      //return the recovery message
   }
});

示例

以下给出的示例演示了如果 model 拒绝 promise,转换将如何中止。创建一个新的路由并将其命名为 *promisereject*,然后打开 *router.js* 文件以定义 URL 映射 -

import Ember from 'ember';                   
//Access to Ember.js library as variable Ember
import config from './config/environment';
//It provides access to app's configuration data as variable config 

//The const declares read only variable
const Router = Ember.Router.extend ({
   location: config.locationType,
   rootURL: config.rootURL
});

//Defines URL mappings that takes parameter as an object to create the routes
Router.map(function() {
   this.route('recoveryrejection');
});

//It specifies Router variable available to other parts of the app
export default Router;

使用以下代码打开在 *app/templates/* 下创建的 *application.hbs* 文件 -

<h2>Recovering from Rejection</h2>
{{#link-to 'recoveryrejection'}}Click Here{{/link-to}}

当点击上述链接时,它将打开 recoveryrejection 模板页面。*recoveryrejection.hbs* 文件包含以下代码 -

{{model.msg}}
{{outlet}}

现在打开 *app/routes/* 下创建的 *recoveryrejection.js* 文件,其代码如下 -

import Ember from 'ember';
import RSVP from 'rsvp';

export default Ember.Route.extend ({
   model() {
      //returning recovery message
      return {
         msg: "Recovered from rejected promise"
      };
   }
});

输出

运行 ember 服务器,你将收到以下输出 -

Ember.js Recover Reject

当你点击链接时,promise 将被拒绝,它将显示恢复消息以继续转换 -

Ember.js Recover Reject
emberjs_router.htm
广告