Javascript AngularJS指令只调用一次?
我试着把mixitup推到我的角度页面中,为了做到这一点,我为它制作了一个指令模块Javascript AngularJS指令只调用一次?,javascript,jquery,angularjs,directive,Javascript,Jquery,Angularjs,Directive,我试着把mixitup推到我的角度页面中,为了做到这一点,我为它制作了一个指令模块 angular.module('MainCtrl', []) .controller('MainController', function($scope) { $scope.tagline = 'To the moon and back!'; }) .directive('mixitContainer', function() { return {
angular.module('MainCtrl', [])
.controller('MainController', function($scope) {
$scope.tagline = 'To the moon and back!';
})
.directive('mixitContainer', function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
$(element).mixItUp(scope.$eval(attrs.mixitContainer));
}
};
});
不要担心主控制器的简单性,它只是一个测试
现在,问题是指令只调用一次!如果我转到另一个页面并要求angular加载另一个控制器,然后返回主页并要求angular再次加载MainCtrl,则该指令不会加载
以下是与指令相关的内容:
<div id="Container" class="mixit-container" mixit-container="{load: {sort: 'order:asc'}, controls: {toggleFilterButtons: true, toggleLogic: 'and'}}">
有人有什么想法吗?AngularJS不包括路由设施。这些都是由ngRoute(一个核心但可选的模块)、ui路由器(ngRoute制作的超级棒)或其他替代品提供的。你不说你用哪一个,每个人都有不同的行为 不管是哪一个,这都将取决于路由器,而不是指令。必要时将调用该指令。它本身不控制-“必需”表示Angular正在编译DOM的一部分,通常来自模板文件,并且已经运行到指令中。它将调用指令并问它“现在怎么办?” 上述路由器具有不同的行为,既有彼此的行为,也取决于您在内部如何配置它们。在所有这些模板中,您都可以进行安排,以便模板可以重新渲染,也可以不重新渲染。例如,在ui路由器中,可以有“子”状态。如果子状态处于活动状态,则父状态也处于活动状态。。。因此,从子级转到父级将不会重新呈现模板,因为它在前面已经完成。为了让事情变得更复杂,您甚至可以通过挂起
$stateChangeStart
事件来覆盖它,并强制路由器重新绘制该视图,即使它认为不需要这样做
所有这些都意味着。。。把你的注意力放到一边。一旦上级做了你想做的事情,它就会做你想做的事情。让你的路由器按照你期望的方式运行,你会很开心的 如果可能的话,请使用fiddle或任何类似的选项。@dotnetstep我会尝试,但会很困难:cw你说的
“再次请求angular加载MainCtrl”是什么意思?
?你是说指令没有编译吗?(使用$compile服务)我假设每次路由到相应页面时,angular都会加载相应页面的控制器?还是不是这样?