我有一个同时具有 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'}
。
这是一个已知的问题?有解决方法吗?