Vas*_*aka 7 javascript angularjs angularjs-scope
嗯,没有太多要解释的. https://jsbin.com/raqajelufu/edit?html,js,output使用angular.copy复制后,任何File对象属性访问都会引发非法调用异常.
考虑到$ watch根据https://docs.angularjs.org/api/ng/type/$rootScope.Scope在内部使用angular.copy,是否有任何解决办法,这将使得观察File对象成为可能?
小智 3
您在哪个浏览器上看到了这个问题?
不久前有人问过类似的问题,得出的结论是这可能与 Chrome v43 有关。
与该问题相关的一些资源:
据推测,Chrome v43 不喜欢angular.copy 源代码中的以下内容:
var emptyObject = Object.create(Object.getPrototypeOf(source));
Run Code Online (Sandbox Code Playgroud)
您可以尝试以下任一方法来查看是否可以抑制您的错误(无论您选择哪种浏览器):
angular.copy, 通过避免深度监视 la $scope.$watch('', fn, true)( jsbin ) 并从 lodash 获取类似_.cloneDeep ( jsbin ) 的东西。angular.copy没有调用上面的行。来源(jsbin)如果你想深入观察但避免angular.copy,我会做这样的事情(在lodash.merge的帮助下):
$scope.$watch(function () {
return _.merge(src, dest);
}, callback);
Run Code Online (Sandbox Code Playgroud)
这样你就不会打电话angular.copy,而且仍然有一个“深度监视”设置。请记住,这是一个非常幼稚的例子,我还没有彻底测试它,但我认为你可以用最少的努力使它的工作方式与有角度的深手表非常相似。
免责声明: 我还没有真正深入研究源代码angular.copy和console/或 Chrome v43 的实际情况。这在某种程度上是一个灰色地带,但根据上述建议,我尚未触发非法调用。
| 归档时间: |
|
| 查看次数: |
3040 次 |
| 最近记录: |