簡體   English   中英

如何在Ember.js中為路由生成url

[英]How to generate url for a route in Ember.js

我想知道如何為給定路線生成網址。

我的情景

我有呼叫列表(db實體),用戶可以選擇多個呼叫並通過電子郵件與其他人共享。

在創建所選調用的子節點之后,帶有散列和關系的db行包含所選調用。 現在我需要生成可以通過電子郵件發送的鏈接。 此鏈接與呼叫路由列表不同。

所以問題是: 是否可以通過Ember.js中的route和params生成url? 謝謝。

您可以使用Router#generate委托給router.js庫

Ember 2.5示例

App = Ember.Application.create();

App.Router.map(function() {
  this.resource('post', { path: '/posts/:post_id' }, function(){
    this.route('edit');
  });
});

App.Post = Ember.Object.extend();

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return [
      App.Post.create({
        id: 5,
        title: 'I am post 5'
      }),
      App.Post.create({
        id: 6,
        title: 'I am post 6'
      }),
      App.Post.create({
        id: 7,
        title: 'I am post 7'
      })];
  },
  actions: {
    showUrl: function(post) {
      alert(this.router.generate('post.edit', post));
    }
  }
});

Ember 1.3示例

App = Ember.Application.create();

App.Router.map(function() {
  this.resource('post', { path: '/posts/:post_id' }, function(){
    this.route('edit');
  });
});

App.Post = Ember.Object.extend();

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return [
      App.Post.create({
        id: 5,
        title: 'I am post 5'
      }),
      App.Post.create({
        id: 6,
        title: 'I am post 6'
      }),
      App.Post.create({
        id: 7,
        title: 'I am post 7'
      })];
  },
  actions: {
    showUrl: function(post) {
      alert(this.router.generate('post.edit', post));
    }
  }
});

這就是{{#link-to ...}}助手在幕后使用的內容。

這可以在任何帶有RouterService的Ember.js類中RouterService 自Ember.js 2.15和3.x以來可用。 路由功能不再局限於Route

Ember 2.15,3.x示例

import Component from '@ember/component';
import { inject as service } from '@ember/service';

export default Component.extend({
  router: service(),

  actions: {
    showUrl(post) {
      alert(this.get('router').urlFor('post.edit', post));
    }
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM