Angular - 如何在事件触发之前保持渲染模板
Angular - how do I keep from rendering template until an event fires?
我有一个类似于以下代码的指令。 它工作正常,但我不得不求助于创建内联模板代码,因为我不希望模板在触发 click 事件之前呈现。 但是,如果我可以分配指令模板并延迟渲染直到事件触发,那会更干净。
有没有办法做到这一点?
(function() {
app.directive("nodeTabset", function($compile) {
return {
restrict: "A",
scope: '&',
controller: [
'$scope', '$element', '$attrs', '$compile', function($scope, $element, $attrs, $compile) {
var TABS;
// Ad hoc template
TABS = "<div id='node-tabset-wrapper'>'n <div id='node-tabset'>'n <div>Set Attribute</div>'n <div ng-show='node.name == '"a'"'>Set Scrape Job</div>'n </div>'n <div id='node-tabset-corner'></div>'n</div>";
$scope.selectNode = function(node) {
node.addClass("selected");
node.prepend(TABS);
$compile(node.children()[0])($scope);
return $scope.$apply();
};
return $scope.evaluateSelection = function($event) {
var parent,
parent = angular.element($event.currentTarget).parent();
// do some stuff
return $scope.selectNode(parent);
};
}
],
link: function(scope, element, attrs, controller) {
return element.bind('click', scope.evaluateSelection);
}
};
});
}).call(this);
我认为
你需要看看承诺库$q
ng-if
.它将删除元素,直到表达式为 true 并创建它、新范围和所有。绑定您的单击以将布尔值更改为 true,并在 ng-if 中设置该布尔值。
相关文章:
- 在Angular ui路由器中,如何将事件从一个视图发送到另一个视图
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 在将绑定应用于控制器之后,是否会发出Angular$scope事件
- 如何在Angular Material中的md背景后面接收ng点击事件
- 是否可以在jQuery事件中更改Angular范围
- 点击事件时将新的JSON数据加载到Angular中
- 如何为angular js条形图添加事件
- Angular JS根据搜索结果和点击事件更新DOM元素
- 我是否可以使用 Angular 将鼠标向上事件绑定到文档正文
- 如何在ngDraggable angular js中停止点击事件
- 使用 jQuery 日期选择器和 Angular 2 更改事件
- 使用 Angular 和 UI-bootstrap 对模态事件绑定无法工作的指令
- 更改 Angular 2 中选择的事件在 Firefox 和 Edge 中不起作用
- 获取 Angular UI-Calendar 上的所有事件(Arshaw 完整日历的指令)
- 指定父文档按钮点击事件来自Angular JS中的子文档控制器
- 在一个html模板中使用(点击)事件来控制单独模板Angular 2中的[hidden]元素
- 是否有任何事件“;在$scope摘要完成时”;或“;在视图刷新时”;在Angular.js中
- 分层元素用一次触摸触发2个事件——Angular
- 在将模型绑定到文本框后调用一个事件——Angular
- 如何使用id获取按钮并调用它的click事件——Angular