在angular js中选择性地点击ng-if指令
click selectively ng-if directive in angular js
HTML:
<div ng-app="myApp" ng-controller="someController as Ctrl">
<div class="clickme" ng-repeat="elems in Ctrl.elem" ng-click="Ctrl.click(elems.title)">
{{elems.title}}
<span>click me</span>
<div id="container">
<test-Input title="elems.title" data="elems.id" ng-if="Ctrl.myId==" >/test-Input>
</div>
</div>
JS:
var Elems = [
{
title : "First",
id : 1
},
{
title : "Second",
id : 2
},
{
title : "Third",
id : 3
}
];
var myApp = angular.module('myApp', []);
myApp.controller('someController', function($scope) {
var self = this;
self.elem = Elems;
self.myId = false;
self.click = function(data){
self.myId = data;
};
});
myApp.directive('testInput',function(){
return {
restrict: 'E',
scope: {
myTitle: '=title',
myId: '=data'
},
template: '<div>{{myTitle}}</div>',
controller: function($scope) {
}
};
});
我是angular js的新手。当我点击"click me"div,然后我想让ng-if = true结果。然后显示(不是ng-show,它会显示每个元素)指令。有什么方法可以用角的方式来做吗?
这里有一个小提琴:http://jsfiddle.net/4L6qbpoy/5/
你可以这样写:
<test-Input title="elems.title" data="elems.id" ng-if="elems.isVisible"></test-Input>
,点击
查看这个jsfiddle
您需要在ng-repeat中将ng-if求值为true。因此,您需要一个条件来计算数组中每个对象的惟一值。
ng-if="Ctrl.myId==elems.title"
要理解,ng-repeat的每个实例都属于控制器的作用域。这意味着重复的n个元素被推到边界,并且只在模板中求值。在这些范围内,您可以访问一个很小的局部作用域,其中包括$index, $first, $odd等。
您可以在这里阅读更多内容:https://docs.angularjs.org/api/ng/directive/ngRepeat
相关文章:
- 在 ng-if 编译后访问指令中的 DOM 元素
- AngularJS ng-if指令在移除元素之前,即使条件为false,也会短暂呈现
- 从指令中向元素添加ng-if属性
- ng-show / ng-hide / ng-if 不适用于 Angular 指令
- 如何使用用@定义的指令作用域生成ng-if
- 如何在不使用指令的情况下操作ng-if内部的元素
- ng-if指令:What'这是问题所在
- Angular ng if不重新编译指令
- 在指令中动态添加ng-if属性
- 在angular js中选择性地点击ng-if指令
- 如何在元素指令上使用ng-if来有条件地调用模块
- Ng-if, ng-show还是自定义指令?关于最佳实践的建议
- 如何在指令之前执行ng-if,或者使用其他东西而不是ng-if
- 在angular.js中,检测$last的指令不能与ng-if一起工作
- 自定义指令在ng-if中第二次绑定不正确
- AngularJS:在指令中使用ng-if来选择部分模板
- 如何在嵌套ng重复指令中使用控制语句(if语句)
- AngularJS-1指令,带有ng-if语句或两个指令
- Angular.js上ng repeat指令中的if语句
- 如何否定AngularJS ng-if指令的参数