【问题标题】:Ext Js proxy pass parameterExt Js代理传参
【发布时间】:2015-04-16 17:43:54
【问题描述】:

我想将一个参数传递给我的 Store 代理以从服务器检索正确的数据。我需要传递不带名称前缀的参数而只传递值。

而不是这种网址:

myAppUrl/collections/units?collectionId=54

可以这样做:

myStore.getProxy().extraParams.collectionId = 54;

我想要这样的电话:

myAppUrl/collections/54/units

我的 Web 服务适用于这两种调用,我只需要正确的客户端代码来传递参数。

请帮助和建议。

【问题讨论】:

  • 您可以查看答案吗? :) 谢谢!

标签: javascript extjs proxy store sencha-architect


【解决方案1】:

它看起来几乎像 REST 请求,但不完全像 REST 将索引放在 url 的末尾。您可以通过实现 Ajax 或 Rest 代理的自定义 buildUrl 来解决它。无论如何,看看这个方法在Rest代理中是如何实现的。

【讨论】:

  • 你能提供一个简单的例子吗
  • 我(还)没有像你这样的自定义 URL 的要求,所以我没有任何可以与你分享的工作示例。事情比看起来简单:您将请求作为参数,然后返回现成的 url。两者之间的逻辑也将非常简单。
  • 感谢您的想法,帮助我创建了包 :)
【解决方案2】:

您可以动态设置您的 url,然后使用下面的代码调用 store 的 load 方法。

store.getProxy().setUrl('your new url');
store.load();

但是如果你要使用这种方法,那么你每次都必须设置正确的 url,否则你可能会得到错误的数据。

【讨论】:

    【解决方案3】:

    一个老问题,但我写给任何有这个问题的人。由于我自己的需要,我在这个包(对于 ExtJS 6)中实现了@Saki 的想法:

    https://bitbucket.org/alfonsonishikawa/extjspackages/wiki/Server%20URL%20Placeholders

    这个想法是能够使用这样的 URL:

    proxy: {
      type: 'rest',
      url: 'myAppUrl/collections/${collectionId}/units',
      appendId: false
    }
    

    使用该软件包,您只需像上面一样配置代理并使用参数调用#load()

    store.load({
      params: {
          collectionId: 54
      }
    });
    

    getProxy().extraParams可以作为默认值)

    This is the source code 作为您向@Saki 询问的示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 2013-08-02
      • 2016-07-25
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 1970-01-01
      相关资源
      最近更新 更多