小编Jon*_*Jon的帖子

使用Ember.PromiseProxyMixin时如何冒泡被拒绝的承诺

我正在使用Ember的PromiseProxyMixin和AJAX数据调用以及Ember RSVP Promises.我不想在每个路由/模板中加入错误处理,而是将拒绝的承诺冒充到Application路由中的错误处理程序,如下所示:

export default Ember.Route.extend({
    actions: {
        error: function(error, transition) {
            return this.transitionTo('error');
            return false;
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

目前,如果承诺被拒绝,被拒绝的承诺似乎没有出现在Application路由中(这是因为PromiseProxyMixin附加到promise的.fail()函数并阻止进一步冒泡?如果是这样,有没有办法继续冒泡?)

是否可以使用PromiseProxyMixin并允许被拒绝的承诺冒泡到Application路由?

ember.js rsvp-promise

7
推荐指数
1
解决办法
370
查看次数

如何在Chrome扩展程序中配置Ember路由?

我们正在使用Ember CLI开发Chrome扩展程序,但是由于索引路由未正确触发,因此难以使路由/资源在Chrome中正常运行。

我们采取的步骤:

  • 创建使用灰烬CLI的默认应用程序:ember new myapp
  • 我们没有定义任何路线,因为我们应该为我们生成索引。
  • 建立:ember build --environment production
  • manifest.json文件放入dist /文件夹中,以定义扩展名。
  • 在Chrome中,我们“加载已解压缩的扩展程序...”,然后将其指向dist /文件夹。

通常,如果Ember应用程序托管在服务器上,则转到ember为该应用程序提供服务的位置,例如hxxp:// localhost:4200 /,将加载该应用程序,并且所有路由都将挂断该应用程序。

然而,因为它是一个Chrome扩展,它不会加载的index.html使用空路由时,这样会//(EXTENSION_ID)/:铬扩展提供了一个错误“此网页未找到”我推测Chrome 默认不会重定向到index.html

如果将扩展名指向chrome-extension://(extension_id)/ index.html,它将加载Ember应用程序,但Ember会出现错误:

未捕获的UnrecognizedURLError:/index.html

解决此问题的一种方法是index.html在路由器中定义如下的路由,但这并不理想:

Router.map(function() {
    this.resource('index', { path: '/index.html' });
});
Run Code Online (Sandbox Code Playgroud)

或者,您可以将位置类型更改为“哈希”:

locationType: 'hash'
Run Code Online (Sandbox Code Playgroud)

在这种情况下,无需上面的其他路由就可以进入index.html,但是路由如何能够与之抗衡?例如,转到chrome-extension://(extension_id)/ some_other_action绝对不会导致Ember App最初加载。

问题:如何在Chrome扩展程序中声明Ember路由?

javascript google-chrome google-chrome-extension ember.js

3
推荐指数
1
解决办法
793
查看次数