当路由改变时,重新运行所有angular object指令(不仅仅是link函数)
rerun all angular object directive (not only link function) on route change
我创建了一个指令,简单地将一些存储在。html中的div标签转换为单个元素。我注意到指令只会在页面重新加载时编译,当路由被改变时,指令不会被触发,我知道你可以使用$ routechangessuccess或$scope。watch来检测路由变化,但在我的情况下,我没有在这个目录中使用link函数,我只使用templateUrl。在路由改变时重载/重新运行这个指令的最好方法是什么?下面是我的代码;
stockfront.factory('directiveConfig', function(){
factory = {};
factory.returnConfig = {
scope : true,
restrict: "E",
replace: true,
templateUrl : "",
template : "",
transclude : true,
link : "",
combine: ""
};
return factory;
});
stockfront.directive("mainDiv", function(directiveConfig){
directiveConfig.returnConfig.templateUrl = "./template/mainDiv.html";
return directiveConfig.returnConfig;
});
这是我尝试过的@Valery Kozlov:
stockfront.run(function($rootScope) {
$rootScope.routeChange = false;
$rootScope.$on("$routeChangeSuccess", function() {
// handle route changes
$rootScope.routeChange = true;
});
});
然后在html:
<main-div ng-if="$root.routeChange"><main-div>
存储在$rootScope stattransition状态中,并使用以下代码片段:
<my-dir ng-if="!$root.transitionInProgress"></my-dir>
我刚刚意识到我做错了什么检查代码....后当另一个目录被触发时,工厂的returnConfig属性在路由交换上被重写。解决方案是将工厂声明为对象,然后将returnConfig添加为原型属性,使其在每个指令安装中都是唯一的
stockfront.factory('directiveConfig', function(){
//constructor
function directiveConfig(){
}
directiveConfig.prototype.returnConfig = function (){
return {
scope : true,
restrict: "E",
replace: true,
templateUrl : "",
template : "",
transclude : true,
link : "",
combine: ""
};
};
return directiveConfig;
});
stockfront.directive("mainDiv", function(directiveConfig){
var obj = new directiveConfig()
var dirDefault = obj.returnConfig();
dirDefault.templateUrl = "./template/mainDiv.html";
return dirDefault;
});
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 参数变量出现ngTable指令问题
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 使用每次都不同的transclude重复指令
- 打开一个模态并将其链接到AngularJS中的指令
- 从html创建一个指令,该指令按类名应用函数
- 函数未在Object.keys或Object.getOwnPropertyNames下列出,但可以调用
- 将JSON对象传递给angular指令
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- JavaScript指令不能像我想象的那样工作
- AngularJs指令,该指令创建内部有数据对象的新指令
- AngularJS指令只识别双向绑定类型
- 从控制器继承了隔离的作用域以生成可重用的指令
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- AngularJS指令出错-无法读取属性'编译'的未定义
- Angular指令在alertify setContent内容中不起作用
- AngularJS引导程序popover与另一个指令Object〔Object Object〕没有方法'popo
- 带有外部依赖项的Jasmine单元测试指令失败,类型错误:'[object对象]'
- 通过属性和包含变量将Object传递给指令
- 当路由改变时,重新运行所有angular object指令(不仅仅是link函数)