刷新/重新加载angularjs自定义指令
refresh/reload angularjs custom directive
我正在使用转盘(https://market.ionic.io/plugins/morph-carousel)在离子项目中。这是一个自定义angularjs指令。我在一个屏幕上使用两个转盘。现在,我想要的是,在更改第一个转盘时,第二个转盘也应该更新为新值。为此,必须重新加载/刷新第二个转盘自定义指令。有没有一种方法可以刷新/重新加载angularjs中的自定义指令?
在link
函数的第一个指令中添加一个观察程序。
scope.$watch('thingToWatchForRefershing', function (newValue, oldValue) {
if (!newValue || angular.equals(newValue, oldValue)) {
return;
}
scope.$emit('somethingChangedInFirstDirective', dataToBePassed);
});
现在,在第二个指令中,有一个render函数,当被调用时,它将刷新模型和视图,并添加一个监听器。
link: function () {
scope.render = function () {
// all logic goes here
};
scope.$on('somethingChangedInFirstDirective', function (ev, data) {
// render everything again i.e. reload the directive
scope.render();
});
// first time rendering
scope.render();
}
希望有帮助:)
更新:
- 仅将属性传递给第一个指令。例如:
<custom-carousel data-is-to-be-watched="isToBeWatched" />
,在您的控制器集中:$scope.isToBeWatched = true
。此外,对于第二个指令,使用:<custom-carousel data-is-tobe-reloaded="isToBeReloaded" />
,并在同一控制器中初始化:$scope.isToBeReloaded = false;
- 如果它是一个独立的指令,有自己的作用域,那么:有这个
scope:{isToBeWatched: '=?', isToBeReloaded: '=?'}, link: function (...) {...}
- 一旦加载了指令,请检查
if (scope.isToBeWatched)
是否为true,这意味着加载/更改了第一个指令,因为我们只在第一个指令中传递了attr。现在,发出一个事件,该事件将在控制器中被侦听。在监听器do:$scope.isToBeReloaded = true;
中,它将在第二个指令的作用域中设置变量isToBeReloaded
,因为我们传入了第二个命令 - 如前所述,为
isToBeReloaded
设置一个观察程序,并重新加载渲染fn
粗略代码:
控制器:
$scope.isToBeWatched = true;
$scope.isToBeReloaded = false;
$scope.$on('somethingChangedInFirstDirective', function () {
$scope.isToBeReloaded = true;
});
指令:
scope: {
isToBeWatched: '=?',
isToBeReloaded: '=?'
},
link: function (scope) {
scope.render = function () {
if (scope.isToBeWatched) {
scope.$emit('somethingChangedInFirstDirective');
}
};
scope.render();
scope.$watch('isToBeReloaded', function (newValue, oldValue) {
if (!newValue || angular.equals(newValue, oldValue))
return;
scope.render();
})
}
相关文章:
- AngularJS自定义日期选择器指令
- AngularJS自定义过滤器未触发点击事件
- 用于分页的 AngularJS 自定义过滤器
- AngularJS:自定义 404 拦截器句柄 - 带有 URL 的响应
- 指令中的 AngularJS 自定义过滤器以格式化值
- AngularJS自定义指令ng显示/ng隐藏
- AngularJS自定义过滤器调用了两次,并在第二次调用时删除输入数据
- 带有隐藏函数的AngularJS自定义指令
- angularjs:自定义直接中的绑定数据在使用“”后不再更新;track-by-;在ng重复中
- 刷新/重新加载angularjs自定义指令
- angularjs自定义模块与$http注入
- 如何使用angularJS自定义服务从REST API获取数据
- AngularJS自定义指令在继承父作用域时访问模板中的属性
- Angularjs自定义服务变量未被$http成功定义
- 来自同一变量的 AngularJS 自定义订单
- AngularJS自定义指令和ctrl,如果出现以下情况,则抛出错误:ctrl的方法与ctrl的名称相同
- Angularjs 自定义指令 scope:true 更改它的父范围
- AngularJS自定义过滤器被调用两次
- AngularJS 自定义指令 - 将属性设置为等于范围对象值
- Angularjs 自定义指令双向绑定不起作用