Ano*_*ous 37 javascript template-engine angularjs
有没有办法检查角度模板中的值是否在数组中?我期待这样的事情:
<div ng-class="{'myClass':1 in [1,2,5]}">Yay</div>
Run Code Online (Sandbox Code Playgroud)
如果1在数组中,则应用myClass.
这可能吗?
另外,Angularjs使用的是什么模板引擎?我在哪里可以找到它的文档?每当我尝试搜索(甚至是官方文档)时,我似乎只会出现关于指令或数据绑定的文档.
Kay*_*ave 72
你可以indexOf()
用来测试一个值是否在数组中然后在你的内部使用它ngClass
(有条件地添加"newclass"):
<div ng-class="{'newclass':([1,2,5].indexOf(2) > -1)}">Yay</div>
Run Code Online (Sandbox Code Playgroud)
或者更有可能你想要针对你的范围内的数组进行测试:
<div ng-class="{'newclass':(tarray.indexOf(1) > -1)}">Yay</div>
Run Code Online (Sandbox Code Playgroud)
例如,假设您已tarray
在控制器中声明:
$scope.tarray=[1,2,5];
Run Code Online (Sandbox Code Playgroud)
就模板引擎而言,它内置于Angular中.所以搜索并没有什么独立的东西.但这里是顶级模板文档 ,这里有一些很好的视频教程,涵盖模板(例如第一个是数据绑定)以及更多.
Mar*_*tin 13
您可以创建一个过滤器来检查这一点.就像是:
app.filter('inArray', function() {
return function(array, value) {
return array.indexOf(value) !== -1;
};
});
Run Code Online (Sandbox Code Playgroud)
然后,您可以在模板中使用此项:
<div ng-class="{'newclass': tarray | inArray : 1}">Yay</div>
Run Code Online (Sandbox Code Playgroud)
这样做的好处是它使您的模板更具可读性.
试试这个:
ng-class="{'myClass': !!~[1,2,5].indexOf(1)}"
Run Code Online (Sandbox Code Playgroud)
如果值不在数组中,那么你得到0!你弄错了