0

有两个模型和连接的商店:前端的用户和订单。后端有两个 api 调用:getOrder(orderId) 和 getOrders()。在“订单商店”中,我为 getOrders() 指定了代理设置。在“订单模型”中,我为 getOrder(orderId) 指定了代理。在这种情况下,当我调用用户的加载方法来获取关联订单时,会使用模型的代理。为什么不使用商店的代理?为什么它不使用。

PS:用户和订单之间的关系在后端描述,取决于用户的身份验证参数。

用户型号代码

Ext.define('Dev.models.User', {
  extend: 'Ext.data.Model',
  requires: ['Dev.stores.Orders'],
  fields: [
    //data
    {name: "name", type: "string"},
    {name: "userId", type: "string"}
  ],

  proxy: {
    type: 'ajax',
    url: '/tcc/getmember',
    idParam: 'memberId',

    reader: {
      type: 'json',
      idProperty : 'memberId'
    }
  },

  hasMany: {
    model: 'Dev.models.Order',
    name: 'orders',
    storeConfig: {
      type: 'orders',
      filters: []
    }
  }
});

订购型号代码

Ext.define('Dev.models.Order', {
  extend: 'Ext.data.Model',
  idProperty : 'orderId',
  fields: [
    {name: "orderId",   type: "string"},
    {name: "title",     type: "string"},
    {name: "createMember",     type: "string"}
  ],

  proxy: {
    type: 'ajax',
    api: {
      create: '/tcc/setorder',
      read: '/tcc/getorder',
      update: '/tcc/setorder',
      destroy: '/tcc/deleteorder'
    },
    idParam : 'orderId',
    reader: {
      type: 'json',
      idProperty : 'orderId'
    }
  },

  belongsTo: {
    model: "Dev.models.User",
    name: 'user',
    getterName: 'getUser',
    foreignKey: 'userId',
    primaryKey: 'createMember'
  }
});

订购商店代码

Ext.define('Dev.stores.Orders', {
extend: 'Ext.data.Store',
model : 'Dev.models.Order',
alias: 'store.orders',
proxy : {
  type : 'ajax',
    api: {
      create: '/tcc/setorder',
      read: '/tcc/getorders',
      update: '/tcc/setorder',
      destroy: '/tcc/deleteorder'
    },
    reader : {
      root: 'orders',
      type : 'json',
      idProperty : 'orderId'
    }
  }
});

使用示例

function doMemberOne(userId) {
  Dev.models.User.load(userId, {
    success: function(record, operation) {
      console.log("User model was loaded successfully");
      doOrders(record.orders());
    },
    failure: function(record, operation) {
      console.log("User model was loaded unsuccessfully");
    }
  });
}

function doOrders(orderStore) {
  orderStore.load({
    callback: function(records, operation, success) {
      if (success) {
        console.log("Orders was loaded successfully");
      } else {
        console.log("Orders was loaded unsuccessfully");
      }
    }
  });
}

Ext.onReady(function() {
  Dev.Authentication.login("admin", "adminpass", "adminorg");
  Dev.Authentication.on('login', function(resp) {
    console.log("Login is successful.");
    doMemberOne(resp.accountid);
  });
});
4

0 回答 0