gpt4 book ai didi

javascript - 即 11 + angularjs 没有从 angular.element ("#idName"中找到范围)

转载 作者:行者123 更新时间:2023-12-03 11:02:22 24 4
gpt4 key购买 nike

今天我遇到了 IE 11 和 AngularJS 的问题,我希望有人以前见过这个问题。

我正在引导我的 Angular 应用程序,并搜索在模式中设置为占位符的 id 元素,并根据应用程序状态将模板 View 加载到 ng-view 中。在 Chrome 和 IE 10 中,此功能运行良好。然而,在 IE 11 中却并非如此。我得到的错误是

Unable to get property 'reloadAndChooseView' of undefined or null reference

未定义或null应该是调用时找到的范围

function chooseView(angular) {
var scope = angular.element('#edit-listing-page').scope();
scope.reloadAndChooseView();
}

一旦应用程序启动,我会调用chooseView,它会通过dom查找元素id并拉出调用reloadAndChooseView()函数的范围。这只是选择一条路线并将模板加载到 ng-view 中。

下面是用于引导我的应用程序的函数

var boostrap = function (angular) {
angular.element(document).ready(function () {
angular.bootstrap(document.getElementById("edit-listing-page"), ['app']);
});
};

如上所述,这在 Chrome、IE10 或 Firefox 中不是问题。这似乎只是 IE 11 的问题。

我尝试将 X-UA-Compatible 设置为 IE 10、9 和 8 兼容模式,看看这是否可以解决此问题,但这根本没有帮助。

大家有什么建议吗

最佳答案

在 IE 被禁止的情况下,我倾向于使用可用的普通 Javascript。

就您的情况而言,您可以尝试以下操作以确保正确选择元素:

var foo = document.getElementByID('edit-listing-page');
var el = angular.element(foo);

您可能还想尝试将选择器函数包装在 $timeout 中(请确保首先包含 #timeout 作为 Controller 参数):

angular.controller('fooCtrl', function($timeout, $scope) {
$timeout(function() {
//No need to re-declare 'angular' in the arguments list
var el = document.getElementByID('edit-listing-page');
var scope = angular.element(el).scope();
scope.reloadAndChooseView();
}, 0);
})

这将确保您的代码仅在 DOM 加载后执行。

关于javascript - 即 11 + angularjs 没有从 angular.element ("#idName"中找到范围),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28025599/

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