Extjs Sencha:动态创建时设置Dataview XTemplate

Extjs Sencha:动态创建时设置Dataview XTemplate,extjs,view,field,Extjs,View,Field,我从服务器上获得了一些数据,根据情况可能会带来不同的字段,因此我得到的是: //This is the way i'm attaching the newly created template to the view //Still no success function processDataMethod(response){ //some processing here... var details = Ext.widget('details');

我从服务器上获得了一些数据,根据情况可能会带来不同的字段,因此我得到的是:

  //This is the way i'm attaching the newly created template to the view
  //Still no success
  function processDataMethod(response){
      //some processing here...
      var details = Ext.widget('details');
      details.config.itemTpl = new Ext.XTemplate(tplFields);
  }

  Ext.Ajax.request({
                url: '...',
                ...,
                success: function (response, request) {

                    var combinedData = processDataMethod(response);
                    operation.setResultSet(Ext.create('Ext.data.ResultSet', {
                        records: combinedData,
                        total: combinedData.length
                    }));

                    operation.setSuccessful();
                    operation.setCompleted();


                    if (typeof callback == "function") {
                        callback.call(scope || that, operation);

                        currentList.up().push(Ext.widget('details'));
                    }
                }
            });

非常感谢您的帮助,谢谢

你必须区分许多事情:

  • currentList.up()
    返回一个DOM元素(Ext.DOM.element)。这没有方法
    push()
  • 使用
    Ext.widget('details',config)
    您可以传递像
    {itemTpl:yourTemplate,data:yourData}
    这样的配置来创建具有自定义模板和自定义数据的实例
  • 要在创建组件后更新组件,您可以始终执行
    someWidget.update(数据)
  • 可以使用
    renderTo
    选项将组件呈现为HTML元素
  • 组件可以以不同的方式附加到现有组件,并且可以以不同的方式更新整个布局或其部分。如果要呈现为HTML元素,则不需要这样做

这有助于您发现问题吗?

您可以发布一些您试图实现的示例代码吗?您正在创建一个我假设的表单?哪些字段是动态的?你在说什么模板?这些自定义字段是否有自己的模板?示例代码将澄清很多问题。我编辑了文章并输入了一些代码,我成功地创建了XTemplate,但我无法绑定视图和模板:我想不出一个名为“details”的xtype。这是什么样的部件?您也可以显示这个的来源吗?一般来说:如果您使用Ext.widget创建组件的实例,您可以/需要将选项(包括模板)作为第二个参数传递。在您的例子中:
Ext.widget('details',{itemTpl:yourTemplate})其中
var yourTemplate=new Ext.XTemplate(tplFields)。如果您在多个位置使用此yourTemplate变量,请将其放在两个函数的更一般的范围内。做得好smhg!!我在这方面失败了:我用Ext.widget创建了一个视图实例,然后我推另一个Ext.widget实例,而不是我之前创建的那个实例。。。谢谢你,朋友!!