Javascript Rally API 2.0车型vs车型
我已经创建了一个自定义看板。在董事会内部,我在卡片上有一个按钮,当某人要对某个项目进行代码审查时,可以申请。点击按钮后,我想去检查实时数据,以确保在屏幕加载后没有其他人声明 如果这是一个故事,我就有所有的工作,但如果这是一个缺陷,我就有一个问题。所以在查看代码时,我注意到我做了一个Javascript Rally API 2.0车型vs车型,javascript,rally,Javascript,Rally,我已经创建了一个自定义看板。在董事会内部,我在卡片上有一个按钮,当某人要对某个项目进行代码审查时,可以申请。点击按钮后,我想去检查实时数据,以确保在屏幕加载后没有其他人声明 如果这是一个故事,我就有所有的工作,但如果这是一个缺陷,我就有一个问题。所以在查看代码时,我注意到我做了一个Rally.data.ModelFactory.getModel然后是model.load 所以我认为应该将其更改为.getModels,并更改类型以合并故事和缺陷。然而,当我这样做的时候,我如何将其正确地输入到搜索中
Rally.data.ModelFactory.getModel
然后是model.load
所以我认为应该将其更改为.getModels
,并更改类型以合并故事和缺陷。然而,当我这样做的时候,我如何将其正确地输入到搜索中。我被困在如何加载和检查它
代码片段是:
if (this.getRecord().get("StoryStatus") == "Review Ready") {
if (this.getRecord().get("CodeReviewedBy") == '') {
content.add([{ xtype: 'button',
text: 'I will review',
scale: 'small',
listeners: {
click: function (btn, e, eOpts) {
// Verify nobody has claimed it yet !
var mod = Rally.data.ModelFactory.getModels({
types: ['HierarchicalRequirement', 'Defect'],
success: function (models) {
var model;
debugger;
if (models.Defect) model = models.Defect
else model = models.HierarchicalRequirement;
model.load(eOpts.scope.record.internalId, {
fetch: ['CodeReviewedBy'],
success: function (currentRecord) {
var currentCRB = currentRecord.get("CodeReviewedBy");
if (currentCRB) {
window.alert('While you were sitting around doing nothing, ' + currentCRB + ' already started reviewing this code');
} else {
var con = Rally.environment.getContext();
currentRecord.set("CodeReviewedBy", con.context.user._refObjectName);
currentRecord.save();
location.reload(true);
//eOpts.scope.refresh();
}
}
});
}
});
this.refresh()
},
scope: this
}
}]);
} else {
content.add([{ xtype: 'label',
html: '<b>Being reviewed by: </b>' + this.getRecord().get("CodeReviewedBy") + '<br>'
}]);
}
}
if(this.getRecord().get(“StoryStatus”)=“Review Ready”){
if(this.getRecord().get(“CodeReviewDBY”)=''){
content.add([{xtype:'button',
课文:“我会复习”,
规模:“小”,
听众:{
点击:功能(btn、e、eOpts){
//确认还没有人认领!
var mod=Rally.data.ModelFactory.getModels({
类型:['HierarchycalRequirement','Defect'],
成功:功能(模型){
var模型;
调试器;
if(models.Defect)model=models.Defect
else model=models.hierarchycalrequirement;
model.load(eOpts.scope.record.internalId{
获取:['CodeReviewDBY'],
成功:函数(currentRecord){
var currentCRB=currentRecord.get(“CodeReviewDBY”);
如果(当前CRB){
alert('当您无所事事时,+currentCRB+'已经开始检查此代码');
}否则{
var con=Rally.environment.getContext();
currentRecord.set(“CodeReviewBy”,con.context.user.\u REOBJECTNAME);
currentRecord.save();
位置。重新加载(true);
//eOpts.scope.refresh();
}
}
});
}
});
这个。刷新()
},
范围:本
}
}]);
}否则{
add([{xtype:'label',
html:“正在审阅者:”+this.getRecord().get(“CodeReviewDBY”)+“
”
}]);
}
}
一旦您有了记录,您就可以实际使用self属性来获取模型-这将节省您再次使用ModelFactory.getModels的时间
var model = this.getRecord().self;
model.load(this.getRecord().get('ObjectID'), {
//fetch, success, etc...
});
我知道这不是最好的代码,但希望它仍然可以被遵循。我在调试器语句周围遇到了问题,似乎我必须得到模型,它返回所有的故事和缺陷??只是没有点击,没有意义。基本上是为了查找故事/缺陷的数据库实时中的CodeReviewer字段是否仍然为空。看来我把事情弄得太复杂了:)谢谢凯尔,这就成功了。实际上,我对它做了一些修改,以获取类型并在getodels.types中使用它,这样它只加载所需的模型。谢谢你的提示!