You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MSGraph问询:能否对MGT组件API返回的displayName属性进行截取操作?

MGT displayName属性截取名字实现方案

方案1:直接在模板插值内处理(适合单一场景使用)

直接在插值表达式中调用JavaScript字符串方法完成截取,无需额外编写JS逻辑,修改后的完整代码如下:

<mgt-person person-query="me">
  <template>
    <div>
      {{person.displayName.split(',')[1]?.trim() || person.displayName}}
    </div>
  </template>
  <template data-type="loading">
    Loading
  </template>
</mgt-person>

逻辑说明:

  • 用split(',')将displayName按逗号切割为数组,示例值"Smith, John"切割后得到["Smith", " John"]
  • 用?.可选链读取数组第二项,避免部分用户的displayName不含逗号时抛出下标读取错误
  • 用trim()去除名字前的多余空格
  • 最后加兜底逻辑,若切割后无有效第二项则直接返回原displayName,避免出现空值异常

方案2:封装全局工具函数(适合多场景复用)

如果项目中多处需要用到该截取逻辑,可以把处理逻辑注册为MGT模板全局可用的函数,避免重复编写代码:
首先添加JS代码注册全局函数:

import { TemplateContext } from '@microsoft/mgt-element';

// 注册全局工具函数
TemplateContext.globalContext.getFirstNameFromDisplayName = (displayName) => {
  if (!displayName) return '';
  const nameParts = displayName.split(',');
  return nameParts.length > 1 ? nameParts[1].trim() : displayName;
}

之后在任意MGT模板中都可以直接调用该函数:

<div>
  {{getFirstNameFromDisplayName(person.displayName)}}
</div>

该方案的优势是后续如果需要调整截取规则,只需要修改一次函数逻辑即可,无需逐个修改模板代码。

内容的提问来源于stack exchange,提问作者spencer souvannarath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:18:00