在AngularJS的学习阶段。试图同时做多个变量和过滤器。参考多个变量和过滤器的AngularJS表达式
具体而言。我有一个有H元素的嵌套无序列表... H1是一个州名称:俄亥俄州,印第安纳州,肯塔基州。 所以... state.statename如果我明白的是在状态名称中寻找单词“state”:在我的ng-repeat中引用。然后在Controller中查看Scope“statenames”并返回“statename:whatever”的结果。
所有工作,因为我喜欢它。
然而,我然后试图在任何状态的嵌套列表项中说,当把所有这些变量放在一起做一个句子时,把statei.stateinitial这个= State Initial放在句子的开头,然后将所有的其他变量。但它不会工作。
例:
我试图做这样的事情:(认为它需要在某个时候被引用前手甚至不工作。)
<ul ng-repeat="**statei in statenames** | levelStd in levelStdDetails | orderBy: 'levelname' "
我试图从stateinitials分离statenames但是创建2范围似乎过度使用相同的范围名称重复使用。
你不行吗?
SOMETHING-A | SOMETHING-B | orderby: SOMETHING-A
或者是像理论:
SOMETHING-A & SOMETHING-B & SOMETHING-C but orderby: SOMETHING-A
工作版本 http://jsfiddle.net/jonnyborg/ge119m6u/1/
<!doctype html>
<html lang="en" ng-app="PlansDetail">
<head>
<meta charset="utf-8">
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
</head>
<body ng-controller="PlansController">
<div>
<form class="form-inline">
<input ng-model="query" type="text" placeholder="Filter by" autofocus>
</form>
<section ng-repeat="state in statenames | filter:query | orderBy: 'statename' ">
<h1>{{state.statename}}</h1>
<ul>
<li ng-repeat="group in groups | orderBy: 'groupname' ">
<h2>{{group.groupname}}</h2>
<ul>
<li ng-repeat="metal in metals | orderBy: 'metalname' ">
<h3>{{metal.metalname}}</h3>
<ul ng-repeat="levelStd in levelStdDetails | orderBy: 'levelname' ">
<li><a ng-href="{{statei.stateinitial + ' ' + group.groupname + ' ' + metal.metalname + ' ' + levelStd.levelname | slug }}.pdf" ng-attr-title="{{statei.stateinitial + ' ' + group.groupname + ' ' + metal.metalname + ' ' + levelStd.levelname}}">{{statei.stateinitial + " " + group.groupname + " " + metal.metalname + " " + levelStd.levelname}}</a></li>
</ul>
<ul ng-repeat="levelOne in levelOneDetails | orderBy: 'levelname' ">
<li><a ng-href="{{statei.stateinitial + ' ' + group.groupname + ' ' + metal.metalname + ' ' + levelOne.levelname | slug }}.pdf" ng-attr-title="{{statei.stateinitial + ' ' + group.groupname + ' ' + metal.metalname + ' ' + levelOne.levelname}}">{{statei.stateinitial + " " + group.groupname + " " + metal.metalname + " " + levelOne.levelname}}</a></li>
</ul>
<ul ng-repeat="levelTwo in levelTwoDetails | orderBy: 'levelname' ">
<li><a ng-href="{{statei.stateinitial + ' ' + group.groupname + ' ' + metal.metalname + ' ' + levelTwo.levelname | slug }}.pdf" ng-attr-title"{{statei.stateinitial + ' ' + group.groupname + ' ' + metal.metalname + ' ' + levelTwo.levelname}}">{{statei.stateinitial + " " + group.groupname + " " + metal.metalname + " " + levelTwo.levelname}}</a></li>
</ul>
<ul ng-repeat="levelThree in levelThreeDetails | orderBy: 'levelname' ">
<li><a ng-href="{{statei.stateinitial + ' ' + group.groupname + ' ' + metal.metalname + ' ' + levelThree.levelname | slug }}.pdf" ng-attr-title"{{statei.stateinitial + ' ' + group.groupname + ' ' + metal.metalname + ' ' + levelThree.levelname}}">{{statei.stateinitial + " " + group.groupname + " " + metal.metalname + " " + levelThree.levelname}}</a></li>
</ul>
<ul ng-repeat="levelLimited in levelLtdDetails | orderBy: 'levelname' ">
<li><a ng-href="{{statei.stateinitial + ' ' + group.groupname + ' ' + metal.metalname + ' ' + levelLimited.levelname | slug }}.pdf" ng-attr-title"{{statei.stateinitial + ' ' + group.groupname + ' ' + metal.metalname + ' ' + levelLimited.levelname}}">{{statei.stateinitial + " " + group.groupname + " " + metal.metalname + " " + levelLimited.levelname}}</a></li>
</ul>
<ul ng-repeat="levelZero in levelZeroDetails | orderBy: 'levelname' ">
<li><a ng-href="{{statei.stateinitial + ' ' + group.groupname + ' ' + metal.metalname + ' ' + levelZero.levelname | slug }}.pdf" ng-attr-title"{{statei.stateinitial + ' ' + group.groupname + ' ' + metal.metalname + ' ' + levelZero.levelname}}">{{statei.stateinitial + " " + group.groupname + " " + metal.metalname + " " + levelZero.levelname}}</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</section>
</div>
<script>
var app = angular.module("PlansDetail", []);
app.controller("PlansController", function($scope) {
$scope.statenames = [
{ statename: "Indiana" },
{ statename: "Kentucky" },
{ statename: "Ohio" },
{ stateinitial: "IN" },
{ stateinitial: "KY" },
{ stateinitial: "OH" }
];
$scope.groups = [
{ groupname: "Family Plan" },
{ groupname: "Family Plan W/Extras" },
{ groupname: "Individual Plan" },
{ groupname: "Individual Plan W/Extras" }
];
$scope.metals = [
{ metalname: "Gold" },
{ metalname: "Silver" },
{ metalname: "Bronze" },
{ metalname: "Catastrophic" }
];
$scope.levelStdDetails = [
{ levelname: "Level Standard EVIDENCE OF COVERAGE" },
{ levelname: "Level Standard SUMMARY OF BENEFITS" },
{ levelname: "Level Standard SCHEDULE OF BENEFITS" }
];
$scope.levelOneDetails = [
{ levelname: "Level 1 EVIDENCE OF COVERAGE" },
{ levelname: "Level 1 SUMMARY OF BENEFITS" },
{ levelname: "Level 1 SCHEDULE OF BENEFITS" }
];
$scope.levelTwoDetails = [
{ levelname: "Level 2 EVIDENCE OF COVERAGE" },
{ levelname: "Level 2 SUMMARY OF BENEFITS" },
{ levelname: "Level 2 SCHEDULE OF BENEFITS" }
];
$scope.levelThreeDetails = [
{ levelname: "Level 3 EVIDENCE OF COVERAGE" },
{ levelname: "Level 3 SUMMARY OF BENEFITS" },
{ levelname: "Level 3 SCHEDULE OF BENEFITS" }
];
$scope.levelLtdDetails = [
{ levelname: "Level Limited EVIDENCE OF COVERAGE" },
{ levelname: "Level Limited SUMMARY OF BENEFITS" },
{ levelname: "Level Limited SCHEDULE OF BENEFITS" }
];
$scope.levelZeroDetails = [
{ levelname: "Level Zero EVIDENCE OF COVERAGE" },
{ levelname: "Level Zero SUMMARY OF BENEFITS" },
{ levelname: "Level Zero SCHEDULE OF BENEFITS" }
];
$scope.filterFunction = function(element) {
return element.name.match(/^Ma/) ? true : false;
};
});
angular.module('PlansDetail')
.filter('slug', function() {
console.log('yo');
return function (input) {
console.log('finally');
if (input) {
return input.toLowerCase().replace(/[^a-z0-9_]/g, '-');
}
};
});
</script>
</body>
</html>
哇@ 7stud非常感谢你的信息和教育的答案。这太棒了!我主要是一个想要JS,PHP和Angular知识的CSS/HTML5家伙。这非常有帮助,谢谢! – JonnyBorg 2014-12-05 14:11:52