systemLib.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /**
  2. * 对某个表达式进行求值
  3. * @param viewModel 数据对象
  4. * @param express
  5. */
  6. export function tplExpress(viewModel, express) {
  7. if (viewModel.expressionRe.test(express)) {
  8. // If we have '{foo}' alone it is a literal 简单表达式
  9. express = express.substring(1, express.length - 1);
  10. return viewModel.get(express)
  11. } else {
  12. let ret = undefined
  13. viewModel.bind(express, function (v) {
  14. ret = v
  15. debugger
  16. })
  17. // Ext.app.bind.TemplateBinding
  18. debugger
  19. }
  20. }
  21. /**
  22. * 对多个表达式进行求值. 异步回调的方式返回
  23. * {
  24. * a: 1,
  25. * b: '{someBind}',
  26. * c: ['a', 'b', 'c'],
  27. * d: ['a', 'b', '{someBind}'],
  28. * e: {
  29. * y: 1,
  30. * z: 2
  31. * },
  32. * f: {
  33. * y: 1,
  34. * z: '{someBind}'
  35. * }
  36. * }
  37. *
  38. * // Will produce
  39. * {
  40. * b: value,
  41. * d: ['a', 'b', value],
  42. * f: {
  43. * y: 1,
  44. * z: value
  45. * }
  46. * }
  47. * @param viewModel scope.viewModel对象
  48. * @param paramObject 求值对象
  49. */
  50. export function calcObject(viewModel, paramObject) {
  51. // new Ext.app.bind.Multi({a:'1',b:'ddd{query.WH_ID}'},currentScope.viewModel,function(v){console.log(v)},currentScope, {single: true})
  52. return new Promise(resolve => {
  53. const schedule = new Ext.app.bind.Multi(
  54. paramObject,
  55. viewModel,
  56. (ret) => {
  57. schedule.destroy()
  58. resolve(ret)
  59. },
  60. viewModel,
  61. {single: true})
  62. })
  63. }