gpt4 book ai didi

javascript - Angular : directive function not called

转载 作者:搜寻专家 更新时间:2023-11-01 05:04:29 25 4
gpt4 key购买 nike

我提供的用于定义我的指令的函数从未被调用。它以前工作正常,但突然停止工作,我不知道为什么。

这是我的指令:

portalApp.directive('contactPanel', function () {
console.log("NEVER SHOWN!");
return {
restrict: 'AE',
replace: 'true',
templateUrl: 'partials/account/contactPanel.html',
scope: {
contact: '=contact',
primaryRoleName: '@',
roleName: '@',
primary: '=primary',
locations: '=locations'
},
controller: function (userService, $rootScope, $scope) {
...snip...
}
};
});

这是一个使用示例:

<contact-panel contact="user.account.contacts.billing" role-name="billing"
locations="locations"></contact-panel>

请注意,我使用了正确的大小写,即 JS 中的驼峰式大小写和 HTML 中的连字符。

关键线索是第二行中记录的消息(即“NEVER SHOWN!”)从未显示在控制台中。如果我在指令声明之前立即记录一条消息,那么它就会显示出来,所以解释器正在执行这段代码,但框架从未使用我的声明。

显然我很想得到答案,但我也很想听听一些调试此类问题的方法。

最佳答案

我只能看到 2 种可能会表现出您所描述的行为。带有指令的 HTML 未编译或指令未注册。

“未编译”情况可能是因为该指令在 Angular 应用程序之外使用,例如:

<div ng-app="portalApp">
...
</div>
...
<contact-panel></contact-panel>

或者,如果您动态添加了 HTML,但没有$compile 并链接它。

“未注册”情况可能是由于重新注册了应用的模块。换句话说,您可能遇到以下情况:

var portalApp = angular.module("portalApp", []);
portalApp.directive("contactPanel", function(){...});

// then elsewhere you use a setter:

angular.module("portalApp", []).controller("FooCtrl", function(){});
// instead of the getter:
// var app = angular.module("portalApp");

angular.module("portalApp", []) 的第二次调用删除了之前注册的 .directive("contactPanel", ...

关于javascript - Angular : directive function not called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32576594/

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