Skip to content

Instantly share code, notes, and snippets.

@nightire
Last active January 28, 2018 11:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nightire/3cbf3da1574795150f9a2756fcd284f9 to your computer and use it in GitHub Desktop.
Save nightire/3cbf3da1574795150f9a2756fcd284f9 to your computer and use it in GitHub Desktop.
double loop
import Ember from 'ember';
const { Controller } = Ember;
export default class ApplicationController extends Controller {
constructor() {
super();
this.application_name = 'Double Loop';
}
}
import Ember from 'ember';
const { Route } = Ember;
export default class ApplicationRoute extends Route {
activate() {
super.activate(...arguments);
document.body.classList.add('standard');
}
}
<header class="container-fluid">
<h1>Demo: {{{application_name}}}</h1>
</header>
<hr>
<main class="container-fluid">
{{outlet}}
</main>
import Ember from 'ember';
const { Controller } = Ember;
export default class IndexController extends Controller {
constructor() {
super(...arguments);
// 简单二重循环(循环内每一组都不需要除了二层数组之外的任何属性)
this.simpleGroups = [ // 最外层的数组就是第一重循环
// 内层的每一个数组都是一个简单的二重循环
[{ name: 'Group 1 - Child 1' }, { name: 'Group 1 - Child 2' }],
[{ name: 'Group 2 - Child 1' }, { name: 'Group 2 - Child 2' }],
[{ name: 'Group 3 - Child 1' }, { name: 'Group 3 - Child 2' }],
];
// 复杂二重循环(循环内每一组都包含自己的属性以及一组 children)
this.complexGroups = [ // 最外层的数组就是第一重循环
// 因为要包含自己的属性,所以内层不能直接是数组了,而需要是一个对象,其中某个属性包含二重循环用的数组,在这个例子里就是 items
{
name: 'Group 1',
items: [{ name: 'Child 1' }, { name: 'Child 2' }]
},
{
name: 'Group 2',
items: [{ name: 'Child 1' }, { name: 'Child 2' }]
},
{
name: 'Group 3',
items: [{ name: 'Child 1' }, { name: 'Child 2' }]
},
];
}
}
import Ember from 'ember';
const { Route } = Ember;
export default class IndexRoute extends Route {
}
<h2>简单二重循环</h2>
<ul>
{{#each simpleGroups as |group index|}}
<li>
<strong>Group {{index}}</strong>
<ul>
{{#each group as |item|}}
<li>{{item.name}}</li>
{{/each}}
</ul>
</li>
{{/each}}
</ul>
<h2>复杂二重循环</h2>
<ul>
{{#each complexGroups as |group|}}
<li>
<strong>{{group.name}}</strong>
<ul>
{{#each group.items as |item|}}
<li>{{group.name}} - {{item.name}}</li>
{{/each}}
</ul>
</li>
{{/each}}
</ul>
/* github.com/twbs/bootstrap/blob/v4.0.0/dist/css/bootstrap-reboot.css */
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
-ms-overflow-style: scrollbar;
-webkit-tap-highlight-color: transparent;
}
@-ms-viewport {
width: device-width;
}
article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {
display: block;
}
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
text-align: left;
background-color: #fff;
}
[tabindex="-1"]:focus {
outline: 0 !important;
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
margin-bottom: 0.5rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-original-title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: .5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
dfn {
font-style: italic;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -.25em;
}
sup {
top: -.5em;
}
a {
color: #007bff;
text-decoration: none;
background-color: transparent;
-webkit-text-decoration-skip: objects;
}
a:hover {
color: #0056b3;
text-decoration: underline;
}
a:not([href]):not([tabindex]) {
color: inherit;
text-decoration: none;
}
a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {
color: inherit;
text-decoration: none;
}
a:not([href]):not([tabindex]):focus {
outline: 0;
}
pre,
code,
kbd,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
-ms-overflow-style: scrollbar;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
border-style: none;
}
svg:not(:root) {
overflow: hidden;
}
table {
border-collapse: collapse;
}
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
color: #6c757d;
text-align: left;
caption-side: bottom;
}
th {
text-align: inherit;
}
label {
display: inline-block;
margin-bottom: .5rem;
}
button {
border-radius: 0;
}
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html [type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}
input[type="radio"],
input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
-webkit-appearance: listbox;
}
textarea {
overflow: auto;
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: .5rem;
font-size: 1.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}
progress {
vertical-align: baseline;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
outline-offset: -2px;
-webkit-appearance: none;
}
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
summary {
display: list-item;
cursor: pointer;
}
template {
display: none;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */
{
"version": "0.13.0",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"hack": "//cdn.staticfile.org/hack/0.7.7/hack.css",
"standard": "//cdn.staticfile.org/hack/0.7.7/standard.css",
"jquery": "//cdn.staticfile.org/jquery/3.2.1/jquery.min.js",
"ember": "2.16.2",
"ember-template-compiler": "2.16.2",
"ember-testing": "2.16.2"
},
"addons": {
"ember-truth-helpers": "latest"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment