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

AngularJS指令数据绑定中的 <? 符号是什么含义?

AngularJS 指令中 <? 绑定符号的作用

<? 是 AngularJS 1.5 及以上版本提供的可选单向输入绑定语法,由两个独立的绑定标识组合生效:

  • 基础标识 <:代表单向数据绑定,只会把父作用域的属性值同步到指令/组件的隔离作用域中,反过来指令内部修改该属性值不会同步回父作用域。和传统的 = 双向绑定相比性能更好,也能避免父作用域属性被意外修改的问题,是 AngularJS 后期版本推荐的数据流绑定方案。
  • 可选标识 ?:代表该输入绑定为非必填项,如果父作用域没有传递对应的属性,指令内部该属性的值会默认设为 undefined,不会抛出绑定缺失的报错。如果不加 ? 标识,父组件未传对应属性时 AngularJS 会直接抛出异常。

代码示例

定义组件时声明绑定规则:

angular.module('myApp').component('userCard', {
  bindings: {
    // 声明userName为可选的单向输入属性
    userName: '<?',
    userAvatar: '<' // 不带?为必填项,父组件不传会报错
  },
  controller: function() {
    this.$onInit = function() {
      // 父组件未传userName时输出undefined,不会触发框架报错
      console.log('用户名:', this.userName)
    }
  }
})

调用组件时两种写法都合法:

<!-- 传值场景 -->
<user-card user-name="currentUser.name" user-avatar="currentUser.avatar"></user-card>
<!-- 非必填参数不传场景,不会报错 -->
<user-card user-avatar="guestAvatar"></user-card>

该语法通常用在非必填的组件入参场景下,既保留了单向绑定的数据流可控性和性能优势,又避免了可选参数未传递导致的运行时异常,可完全替代之前版本常用的 =? 双向可选绑定写法。

内容的提问来源于stack exchange,提问作者dev'd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:57:05