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

添加Angular17 Web Components后AngularJS ng-repeat报错求助

问题排查与解决方案

核心原因

错误根源在于<option>标签的ng-value="{{obj}}"用法错误:

  • AngularJS的ng-value指令接受的是表达式绑定,而非插值后的字符串。当你用{{obj}}时,对象obj会被强制转换为字符串[object Object],AngularJS会尝试将这个字符串解析为表达式,从而触发Token 'Object' is unexpected的语法错误。
  • 引入Angular 17 Web Components后,浏览器对DOM属性的处理逻辑或AngularJS表达式解析的优先级被改变,导致原本未触发的错误显现。

修复步骤

  1. 修正ng-value绑定:移除插值语法,直接绑定对象表达式
    将<option>中的ng-value="{{obj}}"改为ng-value="obj",让AngularJS直接处理对象绑定,避免字符串转换。

  2. 验证后续逻辑:确保selectedRemark.value能正确接收对象类型的值,同时handleRemarks()函数处理对象的逻辑保持正常。

  3. 额外安全检查:如果getRemarks(obj)返回HTML字符串,需确保在控制器中用$sce.trustAsHtml()处理内容,避免XSS风险,示例代码如下:

    $scope.getRemarks = function(obj) {
      return $sce.trustAsHtml(obj.displayText); // 假设obj包含要显示的文本字段
    };
    

修复后的完整代码

<select ng-if="!isOtherRemarkSelected"
    class="form-control m-1" ng-model="selectedRemark.value"
    ng-change="handleRemarks()">
    <option value="">Select Remarks</option>
    <option ng-repeat="obj in remarks track by $index"
      ng-value="obj" ng-bind-html="getRemarks(obj)">
    </option>
</select>

内容的提问来源于stack exchange,提问作者Arif Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:45:17