剑道ui网格外键列和mvvm

剑道ui网格外键列和mvvm,mvvm,kendo-ui,kendo-grid,Mvvm,Kendo Ui,Kendo Grid,我正在与剑道ui网格外键列和mvvm作斗争 我希望能够将 我的问题是:“如何绑定查找字段的values属性?” 这是一篇比较老的文章,但我不得不解决同样的问题,在尝试解决问题时发现了这个问题。我想我会为后代回答这个问题 在MVVM的剑道网格中,“values”属性似乎无法100%工作。我通过两个步骤解决了这个问题 在“loggerSeverityValues”前面加上“this.viewModel”(其中“viewModel”是您所称的VM)。编辑字段时,这将为您提供一个下拉列表 利用模板功能在

我正在与剑道ui网格外键列和mvvm作斗争

我希望能够将

我的问题是:“如何绑定查找字段的values属性?”


这是一篇比较老的文章,但我不得不解决同样的问题,在尝试解决问题时发现了这个问题。我想我会为后代回答这个问题

在MVVM的剑道网格中,“values”属性似乎无法100%工作。我通过两个步骤解决了这个问题

  • 在“loggerSeverityValues”前面加上“this.viewModel”(其中“viewModel”是您所称的VM)。编辑字段时,这将为您提供一个下拉列表
  • 利用模板功能在网格中显示正确的值。我使用了一个小功能来简化这一过程:
  • getText:function(匹配值、值数组、文本、值)
    {
    如果(文本===未定义)
    {
    text='text';
    }
    如果(值===未定义)
    {
    value='value';
    }
    var retText=“未找到值”;
    finalArr=$.grep(valuesArray,函数(val,整数)
    {   
    返回值[值]==匹配值;
    });
    如果(最终长度>0)
    {
    retText=finalArr[0]。文本;
    }
    返回文本;
    }
    
    现场的最终外观将与以下内容大致相同:

    { field: 'severity', width: 270, values: this.viewModel.loggerSeverityValues, template: '#: getText(severity, this.viewModel.loggerSeverityValues) #' }
    
    请注意,如果需要,可以使用getText()函数重写文本和值参数

    不管怎么说,这对我很有效。这是一种解决办法,但从2014.3.1411版开始,kendo MVVM绑定似乎无法与外键正常工作

    编辑:

    对于现在使用剑道ng2+组件的任何人来说,相同的模式,但带有管道变换

    管道:

    从'@angular/core'导入{Pipe,PipeTransform};
    @管道({name:'getText'})
    导出类GetTextPipe实现PipeTransform{
    转换(值:any,idPropertyName:string,valuePropertyName:string,valueArray:any[]):any{
    if(value!=null&&valueArray!=未定义){
    让retIndex=valueArray.map(v=>v[idPropertyName]).indexOf(value);
    返回值数组[retIndex][valuePropertyName];
    }
    否则{
    返回“”;
    }
    }
    }