gpt4 book ai didi

angularjs - 为什么 Zone.js 会改变 AngularJS 评估属性的方式?

转载 作者:太空狗 更新时间:2023-10-29 18:23:05 25 4
gpt4 key购买 nike

我有一个同时具有 Angular (2+) 和 AngularJS (1.x) 的应用程序。我们正在使用第三方 AngularJS 库,它在链接函数中从其 attrs 数组中读取一个对象,如下所示:

//3rd party lib code:
module.directive('test', () => ({
template: `Look at the console`,
link(elt, scope, attrs) {
console.log('link attrs.props', attrs.props);
}
}))

模板:

<!-- someObject = {name: 'foo'} -->
<test props="{{someObject}}"></test>

我们刚刚升级到最新版本的 AngularJS,我们发现了一个问题。通常,attrs.props 评估为对象的字符串表示形式。我们得到的不是字符串化对象,而是“[object Object]”

我尝试了一个最小的复制,但我无法重现问题,直到我尝试导入 Zone.js,正如您在这个 stackblitz 上看到的那样: https://stackblitz.com/edit/angularjs-attrs-test?file=app.js

如果导入了 Zone.js(Angular 2+ 需要它),那么 attrs.props 就是 "[object Object]"。没有它,attrs.props 就是 {name: 'foo'}

这是一个已知问题吗?有解决方法吗?

最佳答案

总是在加载 ZoneJS 之前加载 ZoneJS 是一个好习惯,否则可能会发生一些奇怪的问题。在你的例子中,如果你简单地将 ZoneJS 导入移动到第一行,它就解决了问题。

关于angularjs - 为什么 Zone.js 会改变 AngularJS 评估属性的方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51841365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com