我有一些代码将Release模型拉回来并在网格中显示,这工作正常,但我无法弄清楚如何检查返回模型中的内容。
我想要的是在某种对象中获取模型的内容,我可以根据需要重新组织或钻取(在本例中为发布模型)。
如果我添加一个组件并将模型转储到html中,它就不会像我期望的那样返回内容。
Rally.data.ModelFactory.getModel({
type: 'Release',
success: function(model) {
this.add({
xtype: 'component',
html: model
});
this.grid = this.add({
xtype: 'rallygrid',
model: model,
columnCfgs: [
'FormattedID',
'Name',
'RevisionHistory' ],
storeConfig: {
filters: queryFilters
}
});
},
scope: this
});
如果我深入研究ExtJS文档,似乎我应该可以在模型上执行类似getData()的操作来返回内容,但这不起作用。
调试器中的检查告诉我我有一个“Rally.domain.v2.0.project.10098485624.Release”对象,但我看不到如何简单地访问对象中的项目列表。显然有一种方法,因为将此模型传递给网格组件将非常愉快地显示它。 这个对象的调试器向我展示了一些要调用的其他函数,但我不知道哪一个或如何使用它
...
getArtifactMappings: function () {
getCollectionFields: function () {
getCustomFields: function () {
getField: function (fieldName) {
getFields: function () {
getFieldsByName: function (fieldNames) {
getName: function () {
getNonCollectionFields: function () {
getPermissionLevels: function (permission) {
getProxy: function () {
etc...
Rally文档表明我应该可以在模型https://help.rallydev.com/apps/2.0rc2/doc/#!/api/Rally.data.Model上调用getData(),但看起来ModelFactory.getModel()没有返回具有getData()方法的类型
答案 0 :(得分:1)
模型是一个类,而记录是该类的实例。
getData()
将用于记录。
有一些静态方法适用于实际模型,但getData()
不是其中之一。
以下是以下代码中的片段:
_onDataLoaded: function(store, data){
_.each(data, function(record){
var r = record.getData();
console.log('release', r);
此代码构建按项目和ReleaseStartDate过滤的版本网格。我注意到在您的代码中,您希望通过实际修改dom来显示模型信息,可能用于调试目的。我更喜欢使用console.log,但在下面的例子中我做了两个。我使用了带页脚的边框布局,并在页脚中将容器的html属性设置为JSON.stringify(r)
Ext.define('CustomApp', {
extend: 'Rally.app.App',
componentCls: 'app',
layout:'border',
defaults: {
collapsible: true,
split: true,
bodyStyle: 'padding:15px',
},
items: [{
title: 'data',
region:'south',
itemId: 'd',
margins: '5 0 0 0',
cmargins: '5 5 0 0'
},{
title: 'Releases',
itemId: 'r',
collapsible: false,
region:'center',
margins: '5 0 0 0'
}] ,
launch: function() {
var context = this.getContext();
var projectId = context.getProject().ObjectID;
var millisecondsInDay = 86400000;
var currentDate = new Date();
var startDate = new Date(currentDate - millisecondsInDay*90); //in the last 90 days
var startDateUTC = startDate.toISOString();
Ext.create('Rally.data.WsapiDataStore', {
model: 'Release',
fetch: ['Name','ReleaseStartDate','ReleaseDate', 'State'],
filters: [
{
property: 'ReleaseStartDate',
operator: '>',
value: startDateUTC
},
{
property: 'Project',
operator: '=',
value: '/project/'+ projectId
}
],
autoLoad: true,
listeners: {
load: this._onDataLoaded,
scope: this
}
});
},
_onDataLoaded: function(store, data){
var text = '';
_.each(data, function(record){
var r = record.getData();
console.log('release', r);
text = text + JSON.stringify(r);
});
console.log('text', text);
this.down('#d').add({
xtype:'container',
html: text
});
if (!this.down('#g')) {
this.down('#r').add({
xtype: 'rallygrid',
store: store,
itemId: 'g',
columnCfgs: [
{
text: 'Name', dataIndex: 'Name'
},
{
text: 'State', dataIndex: 'State'
},
{
text: 'Start Date', dataIndex: 'ReleaseStartDate', flex:1
},
{
text: 'Release Date', dataIndex: 'ReleaseDate',flex:1
}
]
});
}
else{
(this.down('#g')).reconfigure(store);
}
}
});