Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS指令只调用一次?_Javascript_Jquery_Angularjs_Directive - Fatal编程技术网

Javascript AngularJS指令只调用一次?

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 {

我试着把mixitup推到我的角度页面中,为了做到这一点,我为它制作了一个指令模块

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都会加载相应页面的控制器?还是不是这样?