Extjs 如何将Ext.ComponentQuery.query与嵌套属性一起使用
如何在Sencha Touch中使用具有嵌套属性的Ext.ComponentQuery.query e、 g 这让我犯了“意外错误” 鉴于:Extjs 如何将Ext.ComponentQuery.query与嵌套属性一起使用,extjs,sencha-touch,Extjs,Sencha Touch,如何在Sencha Touch中使用具有嵌套属性的Ext.ComponentQuery.query e、 g 这让我犯了“意外错误” 鉴于: Ext.define('SomeView', { xtype : 'someview', config : { categoryCfg : { id : 5, name : 'someName' } } }); 这可能吗 谢谢。虽然没有完全回答这
Ext.define('SomeView', {
xtype : 'someview',
config : {
categoryCfg : {
id : 5,
name : 'someName'
}
}
});
这可能吗
谢谢。虽然没有完全回答这个问题,但你可以做一些变通,让它发挥作用 您可以向nestedConfig添加更新方法,如下所示
Ext.define('myCoolClass', {
config : {
nestedConfig : {
nestedId : 5
},
nestedId : null
},
updateNestedConfig: function (nestedConfig) {
if (nestedConfig.nestedId) {
this.setNestedId(nestedConfig.nestedId);
}
}
});
通过这样做,您现在可以访问普通组件查询属性
Ext.ComponentQuery.query('[nestedId=555]')
举个例子。如果你看一看Sencha源代码,他们会很像在NavigationView和TabPanels中那样使用它,虽然没有完全回答这个问题,但是你可以做一些工作来让它工作 您可以向nestedConfig添加更新方法,如下所示
Ext.define('myCoolClass', {
config : {
nestedConfig : {
nestedId : 5
},
nestedId : null
},
updateNestedConfig: function (nestedConfig) {
if (nestedConfig.nestedId) {
this.setNestedId(nestedConfig.nestedId);
}
}
});
通过这样做,您现在可以访问普通组件查询属性
Ext.ComponentQuery.query('[nestedId=555]')
举个例子。如果你看一看Sencha源代码,他们会很像在NavigationView和TabPanels中那样使用它,虽然没有完全回答这个问题,但是你可以做一些工作来让它工作 您可以向nestedConfig添加更新方法,如下所示
Ext.define('myCoolClass', {
config : {
nestedConfig : {
nestedId : 5
},
nestedId : null
},
updateNestedConfig: function (nestedConfig) {
if (nestedConfig.nestedId) {
this.setNestedId(nestedConfig.nestedId);
}
}
});
通过这样做,您现在可以访问普通组件查询属性
Ext.ComponentQuery.query('[nestedId=555]')
举个例子。如果你看一看Sencha源代码,他们会很像在NavigationView和TabPanels中那样使用它,虽然没有完全回答这个问题,但是你可以做一些工作来让它工作 您可以向nestedConfig添加更新方法,如下所示
Ext.define('myCoolClass', {
config : {
nestedConfig : {
nestedId : 5
},
nestedId : null
},
updateNestedConfig: function (nestedConfig) {
if (nestedConfig.nestedId) {
this.setNestedId(nestedConfig.nestedId);
}
}
});
通过这样做,您现在可以访问普通组件查询属性
Ext.ComponentQuery.query('[nestedId=555]')
举个例子。如果你看一看Sencha源代码,他们会像在NavigationView和TabPanels中一样使用它,这确实是一个有趣的问题。似乎没有一个绝对直接的解决方案,但是有一个相当快速的解决方法。您可以将视图代码修改为:
Ext.define('SomeView', {
xtype : 'someview',
config : {
categoryCfg : {
id : 5,
name : 'someName'
}
},
hasCategoryId: function (id) {
return this.getCategoryCfg().id == id;
}
});
然后您可以进行如下查询:
Ext.ComponentQuery.query('someview{hasCategoryId(1)}');
或
注意:选择器的语法是xtype{memberMethod()},中间没有空格。这样,两个选择器必须匹配(与CSS中的.class1.class2相同)。选择器也必须按此顺序,因为结果集是按顺序由每个选择器过滤的,如果某些组件没有hasCategoryId方法,它将只与“{hasCategoryId(1)}”中断。这确实是一个有趣的问题。似乎没有一个绝对直接的解决方案,但是有一个相当快速的解决方法。您可以将视图代码修改为:
Ext.define('SomeView', {
xtype : 'someview',
config : {
categoryCfg : {
id : 5,
name : 'someName'
}
},
hasCategoryId: function (id) {
return this.getCategoryCfg().id == id;
}
});
然后您可以进行如下查询:
Ext.ComponentQuery.query('someview{hasCategoryId(1)}');
或
注意:选择器的语法是xtype{memberMethod()},中间没有空格。这样,两个选择器必须匹配(与CSS中的.class1.class2相同)。选择器也必须按此顺序,因为结果集是按顺序由每个选择器过滤的,如果某些组件没有hasCategoryId方法,它将只与“{hasCategoryId(1)}”中断。这确实是一个有趣的问题。似乎没有一个绝对直接的解决方案,但是有一个相当快速的解决方法。您可以将视图代码修改为:
Ext.define('SomeView', {
xtype : 'someview',
config : {
categoryCfg : {
id : 5,
name : 'someName'
}
},
hasCategoryId: function (id) {
return this.getCategoryCfg().id == id;
}
});
然后您可以进行如下查询:
Ext.ComponentQuery.query('someview{hasCategoryId(1)}');
或
注意:选择器的语法是xtype{memberMethod()},中间没有空格。这样,两个选择器必须匹配(与CSS中的.class1.class2相同)。选择器也必须按此顺序,因为结果集是按顺序由每个选择器过滤的,如果某些组件没有hasCategoryId方法,它将只与“{hasCategoryId(1)}”中断。这确实是一个有趣的问题。似乎没有一个绝对直接的解决方案,但是有一个相当快速的解决方法。您可以将视图代码修改为:
Ext.define('SomeView', {
xtype : 'someview',
config : {
categoryCfg : {
id : 5,
name : 'someName'
}
},
hasCategoryId: function (id) {
return this.getCategoryCfg().id == id;
}
});
然后您可以进行如下查询:
Ext.ComponentQuery.query('someview{hasCategoryId(1)}');
或
注意:选择器的语法是xtype{memberMethod()},中间没有空格。这样,两个选择器必须匹配(与CSS中的.class1.class2相同)。选择器也必须按此顺序,因为每个选择器都会按顺序过滤结果集,如果某些组件没有hasCategoryId方法,它将只与“{hasCategoryId(1)}”中断。这样做的标准方法是添加自定义伪类匹配器:
Ext.ComponentQuery.pseudos.hasCategoryId = function(components, selector) {
var result = [],
c, i, len;
for (i = 0, len = components.length; i < len; i++) {
c = components[i];
if (c.config.categoryCfg && c.config.categoryCfg.id == selector) {
result.push(c);
}
}
return result;
}
查看更多的方法来剥猫皮。这样做的标准方法是添加自定义伪类匹配器:
Ext.ComponentQuery.pseudos.hasCategoryId = function(components, selector) {
var result = [],
c, i, len;
for (i = 0, len = components.length; i < len; i++) {
c = components[i];
if (c.config.categoryCfg && c.config.categoryCfg.id == selector) {
result.push(c);
}
}
return result;
}
查看更多的方法来剥猫皮。这样做的标准方法是添加自定义伪类匹配器:
Ext.ComponentQuery.pseudos.hasCategoryId = function(components, selector) {
var result = [],
c, i, len;
for (i = 0, len = components.length; i < len; i++) {
c = components[i];
if (c.config.categoryCfg && c.config.categoryCfg.id == selector) {
result.push(c);
}
}
return result;
}
查看更多的方法来剥猫皮。这样做的标准方法是添加自定义伪类匹配器:
Ext.ComponentQuery.pseudos.hasCategoryId = function(components, selector) {
var result = [],
c, i, len;
for (i = 0, len = components.length; i < len; i++) {
c = components[i];
if (c.config.categoryCfg && c.config.categoryCfg.id == selector) {
result.push(c);
}
}
return result;
}
查看更多的方法来掩饰这只猫。拥有两次nestedId听起来不太正确,在这种情况下,我宁愿完全放弃nestedConfig,并在配置级别定义所有属性。。。此外,还必须创建另一个函数来设置值……顺便说一句,按照惯例,它应该是“mycolclass”;)拥有两次nestedId听起来不太正确,在这种情况下,我宁愿完全放弃nestedConfig,并在配置级别定义所有属性。。。此外,还必须创建另一个函数来设置值……顺便说一句,按照惯例,它应该是“mycolclass”;)拥有两次nestedId听起来不太正确,在这种情况下,我宁愿完全放弃nestedConfig,并在配置级别定义所有属性。。。此外,还必须创建另一个函数来设置值……顺便说一句,按照惯例,它应该是“mycolclass”;)拥有两次nestedId听起来不太正确,在这种情况下,我宁愿完全放弃nestedConfig,并在配置级别定义所有属性。。。此外,还必须创建另一个函数来设置值…顺便说一句