超全模态模型 × Harness 升级,升级解锁 ArkClaw,最新支持 DeepSeek-V4 系列与 GLM-5.1
我之前也碰到过类似的情况,ng-cloak在这里其实起不到你想要的作用——因为浏览器在Angular完成表达式编译之前,就已经开始解析<object>标签的data属性了,它会把{{tab.documentdata}}当成字符串的一部分,直接发起那个包含未替换表达式的错误请求。ng-cloak只是用来隐藏未编译的模板内容,阻止不了浏览器解析元素属性。
ng-cloak
<object>
data
{{tab.documentdata}}
下面给你几个可行的解决方案:
ng-if
这是最直接的方法,通过ng-if控制<object>标签只有在tab.documentdata有值的时候才渲染到DOM中。这样浏览器就不会提前解析那个带表达式的data属性了。
tab.documentdata
<object ng-if="tab.documentdata" ng-cloak data="data:application/pdf;base64,{{tab.documentdata}}" width="100%" height="5000" standby="Loading document..."> Oops, you have no PDF viewer enabled </object>
原理:ng-if会在表达式为真时才将元素插入DOM,在tab.documentdata加载完成前,这个<object>根本不会出现在页面里,自然不会触发错误的HTTP请求。
ng-attr-data
Angular的ng-attr-*指令会在表达式求值完成后,再给元素设置对应的属性。这样浏览器一开始看不到data属性,直到tab.documentdata加载完成并替换表达式后,才会生成正确的data URI。
ng-attr-*
<object ng-cloak ng-attr-data="{{tab.documentdata ? 'data:application/pdf;base64,' + tab.documentdata : ''}}" width="100%" height="5000" standby="Loading document..."> Oops, you have no PDF viewer enabled </object>
原理:ng-attr-data会根据tab.documentdata的状态动态生成属性值——当数据未加载时,data属性为空,浏览器不会发起请求;数据加载完成后,才会设置正确的PDF data URI。
如果需要更灵活的控制,可以在控制器里等待PDF数据加载完成后,再手动创建<object>元素并插入到DOM中。
// 假设你通过HTTP请求获取PDF的base64数据 $http.get('/your-api-endpoint') .then(function(response) { $scope.tab.documentdata = response.data; // 创建object元素 const pdfObject = document.createElement('object'); pdfObject.width = '100%'; pdfObject.height = '5000'; pdfObject.standby = 'Loading document...'; pdfObject.data = `data:application/pdf;base64,${$scope.tab.documentdata}`; // 插入到指定容器中 document.getElementById('pdf-container').appendChild(pdfObject); });
<div id="pdf-container"> Oops, you have no PDF viewer enabled </div>
原理:这种方式完全控制了<object>元素的创建时机,只有当数据准备好后才会生成元素并设置data属性,从根源上避免了提前请求的问题。
内容的提问来源于stack exchange,提问作者I'm nidhin
超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起
模型再升级,30秒超长叙事, 模态参考扩容
模型自由,工具不限,最新支持 Deepseek-V4 系列、GLM-5.3 系列
超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列
大模型19元起,Al应用9.9元畅享,新人首购爆款尽享优惠