2016-11-10 91 views
0

吴 - 包括驱使我坚果,我真的希望你能帮助。 所以我的母版页ng-include加载部分偏好一次

<div id="subViewPartial"> <ng-include class="col-md-8 col-md-offset-2" src="currentPartial"> </ng-include> </div>

这个HTML代码和angularjs我有以下功能

$scope.createUnit = function (link) { 
     $rootScope.Action = 0; 
     $rootScope.Id = 0; 

     $scope.currentPartial = window.location.origin + link; 
     setTimeout(SubViewService.showSubView(), 500); 
    }; 

$scope.createUser = function (link) { 
     //////console.log(link); 
     $scope.currentPartial = window.location.origin + link; 
     setTimeout(SubViewService.showSubView(), 500); 
    }; 

现在,如果火的createUser一次,然后我执行createUnit serveral的时间,子视图将在createUser和createUnit之间旋转,即使我没有调用createUser。

这里是SubviewService以及

BAapp.service('SubViewService', function() { 
this.showSubView = function() { 
    var subViewContent = '#subViewPartial'; 

    $.subview({ 
     content: subViewContent, 
     onShow: function() { 
     }, 
     onClose: function() { 
      $.hideSubview(); 
     }, 
     onHide: function() { 
     } 
    }); 
} 

});

我希望我在解释问题时很清楚。任何想法是怎么回事?

+0

$ .subview()是做什么的?它看起来像是一个jQuery插件或其他东西。另外,你能否提供一些关于如何将这段代码添加到DOM的上下文?我的意思是,$ scope.createUnit ...代码的一部分是什么?一个组件?控制器?如果是这样,该组件/控制器如何添加到页面? – Robba

+0

嗨Robba,是的子视图是一个jQuery插件。 $ scope.CreateUnit以及$ scope.CreateUser是不同控制器的组成部分,因此如果它们被调用,每次调用'$ scope.currentPartial = window.location.origin + link;'将通过一次打开的部分旋转。 BTW。 $ .subview()只是以动画方式显示div内容。 – user1961008

回答

0

你应该做的是仔细看看调用createUnit()createUser()函数的位置。例如,通过在这些方法中设置console.debug()陈述或debugger陈述。

你提到它们是单独控制器的一部分,这是否意味着在初始化控制器期间调用这些功能?

如果是这样的话,你很可能(不小心)创建调用createUser()比你想象的,可能是因为ng-includeng-ifng-switch结构控制器。

+0

Robba,在调试器中,函数createUser和createUnit在调用时被触发。但是我注意到,部分视图控制器(MVC .NET)仅在部分首次加载时触发。就好像ng-include将局部视图存储在内存中一样。 – user1961008

+0

我不完全确定MVC与它有什么关系,我假设您使用MVC即时生成Angular视图,但Angular只使用$ templateCache服务存储它时只下载一次模板是正确的。你的问题似乎与不止一次被调用的createUser对不对? – Robba

+0

是Robba,我的所有视图都与MVC控制器中的特定操作结果相关联。问题是,当我打开两个或更多部分视图(通过ng-include)时,它将在缓存中的这些视图之间旋转。步骤1)点击createUser =>创建用户部分被加载,步骤2)点击createUnit =>创建用户部分被加载(这里存在问题),步骤3)点击createUnit =>创建单元部分被加载,步骤4)点击createUnit =>创建用户部分已加载。希望你看到这个问题。有没有办法来清空$ templateCache服务? – user1961008