Permalink
Browse files

🍣 Ajaxで取得したデータのバインディング

  • Loading branch information...
1 parent 0568aa0 commit 7188342809b6edc4313888709be007d64f4461d4 @tumbling-dice committed Sep 10, 2016
Showing with 67 additions and 74 deletions.
  1. +1 −61 public/blog.html
  2. +47 −3 public/components/blog.tag
  3. +19 −0 public/javascripts/blog.json
  4. +0 −10 public/stylesheets/blog.css
View
@@ -32,67 +32,7 @@ <h1 class="blog-title">The Bootstrap Blog</h1>
</div>
<div class="row">
- <div class="col-sm-8 blog-main">
-
- <blog-post title="Sample blog post" meta="January 1, 2014" author="Mark" link="#">
- <p>This blog post shows a few different types of content that's supported and styled with Bootstrap. Basic typography, images, and code are all supported.</p>
- <hr>
- <p>Cum sociis natoque penatibus et magnis <a href="#">dis parturient montes</a>, nascetur ridiculus mus. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Sed posuere consectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum.</p>
- <blockquote>
- <p>Curabitur blandit tempus porttitor. <strong>Nullam quis risus eget urna mollis</strong> ornare vel eu leo. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
- </blockquote>
- <p>Etiam porta <em>sem malesuada magna</em> mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.</p>
- <h2>Heading</h2>
- <p>Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.</p>
- <h3>Sub-heading</h3>
- <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
- <pre><code>Example code block</code></pre>
- <p>Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa.</p>
- <h3>Sub-heading</h3>
- <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
- <ul>
- <li>Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</li>
- <li>Donec id elit non mi porta gravida at eget metus.</li>
- <li>Nulla vitae elit libero, a pharetra augue.</li>
- </ul>
- <p>Donec ullamcorper nulla non metus auctor fringilla. Nulla vitae elit libero, a pharetra augue.</p>
- <ol>
- <li>Vestibulum id ligula porta felis euismod semper.</li>
- <li>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</li>
- <li>Maecenas sed diam eget risus varius blandit sit amet non magna.</li>
- </ol>
- <p>Cras mattis consectetur purus sit amet fermentum. Sed posuere consectetur est at lobortis.</p>
- </blog-post>
-
- <blog-post title="Another blog post" meta="December 23, 2013" author="Jacob" link="#">
- <p>Cum sociis natoque penatibus et magnis <a href="#">dis parturient montes</a>, nascetur ridiculus mus. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Sed posuere consectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum.</p>
- <blockquote>
- <p>Curabitur blandit tempus porttitor. <strong>Nullam quis risus eget urna mollis</strong> ornare vel eu leo. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
- </blockquote>
- <p>Etiam porta <em>sem malesuada magna</em> mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.</p>
- <p>Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.</p>
- </blog-post>
-
- <blog-post title="New feature" meta="December 14, 2013" author="Chris" link="#">
- <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
- <ul>
- <li>Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</li>
- <li>Donec id elit non mi porta gravida at eget metus.</li>
- <li>Nulla vitae elit libero, a pharetra augue.</li>
- </ul>
- <p>Etiam porta <em>sem malesuada magna</em> mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.</p>
- <p>Donec ullamcorper nulla non metus auctor fringilla. Nulla vitae elit libero, a pharetra augue.</p>
- </blog-post>
-
- <nav>
- <ul class="pager">
- <li><a href="#">Previous</a></li>
- <li><a href="#">Next</a></li>
- </ul>
- </nav>
-
- </div>
- <!-- /.blog-main -->
+ <blog-main></blog-main>
<div class="col-sm-3 col-sm-offset-1 blog-sidebar">
<div class="sidebar-module sidebar-module-inset">
@@ -1,8 +1,45 @@
+<blog-main>
+
+ <div class="col-sm-8 blog-main">
+ <blog-post each="{ post in posts }" title="{ post.title }" meta="{ post.meta }" author="{ post.author }" link="{ post.link }" body="{ post.body }"></blog-post>
+ <!-- 本当はここもちゃんと作らないといけないんだけど割愛 -->
+ <nav>
+ <ul class="pager">
+ <li>
+ <a href="#">Previous</a>
+ </li>
+ <li>
+ <a href="#">Next</a>
+ </li>
+ </ul>
+ </nav>
+ </div>
+
+ <style scoped>
+ .blog-main {
+ font-size: 18px;
+ line-height: 1.5;
+ }
+
+ </style>
+
+ <script>
+ var self = this;
+ this.posts = [];
+ // API作るの面倒なのでJSON読みこむだけ
+ $.get("/javascripts/blog.json").done(function (data) {
+ self.posts = data;
+ self.update();
+ });
+ </script>
+</blog-main>
+
<blog-post>
- <div class="blog-post">
+ <div class="blog-post" name="body">
<h2 class="blog-post-title">{ opts.title }</h2>
- <p class="blog-post-meta">{ opts.meta } by <a href="{ opts.link }">{ opts.author }</a></p>
- <yield/>
+ <p class="blog-post-meta">{ opts.meta } by
+ <a href="{ opts.link }">{ opts.author }</a>
+ </p>
</div>
<style scoped>
@@ -19,4 +56,11 @@
}
</style>
+
+ <script>
+ // opts.bodyをそのまま表示するとエスケープされてしまうので、何らかの要素のinnerHTMLに追加しないといけない。
+ // カスタムタグ内のnameが付いているDOMはthisからアクセスできるので、適当にdivにbodyなんてnameを指定している。
+ $(this.body).append($(opts.body));
+ </script>
+
</blog-post>
@@ -0,0 +1,19 @@
+[{
+ "title": "Sample blog post",
+ "meta": "January 1, 2014",
+ "author": "Mark",
+ "link": "#",
+ "body": "<p>This blog post shows a few different types of content that's supported and styled with Bootstrap. Basic typography, images, and code are all supported.</p>\n<hr>\n<p>Cum sociis natoque penatibus et magnis <a href=\"#\">dis parturient montes</a>, nascetur ridiculus mus. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Sed posuere consectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum.</p>\n<blockquote>\n<p>Curabitur blandit tempus porttitor. <strong>Nullam quis risus eget urna mollis</strong> ornare vel eu leo. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>\n</blockquote>\n<p>Etiam porta <em>sem malesuada magna</em> mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.</p>\n<h2>Heading</h2>\n<p>Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.</p>\n<h3>Sub-heading</h3>\n<p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>\n<pre><code>Example code block</code></pre>\n<p>Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa.</p>\n<h3>Sub-heading</h3>\n<p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>\n<ul>\n<li>Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</li>\n<li>Donec id elit non mi porta gravida at eget metus.</li>\n<li>Nulla vitae elit libero, a pharetra augue.</li>\n</ul>\n<p>Donec ullamcorper nulla non metus auctor fringilla. Nulla vitae elit libero, a pharetra augue.</p>\n<ol>\n<li>Vestibulum id ligula porta felis euismod semper.</li>\n<li>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</li>\n<li>Maecenas sed diam eget risus varius blandit sit amet non magna.</li>\n</ol>\n<p>Cras mattis consectetur purus sit amet fermentum. Sed posuere consectetur est at lobortis.</p>"
+}, {
+ "title": "Another blog post",
+ "meta": "December 23, 2013",
+ "author": "Jacob",
+ "link": "#",
+ "body": "<p>Cum sociis natoque penatibus et magnis <a href=\"#\">dis parturient montes</a>, nascetur ridiculus mus. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Sed posuere consectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum.</p>\n<blockquote>\n<p>Curabitur blandit tempus porttitor. <strong>Nullam quis risus eget urna mollis</strong> ornare vel eu leo. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>\n</blockquote>\n<p>Etiam porta <em>sem malesuada magna</em> mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.</p>\n<p>Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.</p>"
+}, {
+ "title": "New feature",
+ "meta": "December 14, 2013",
+ "author": "Chris",
+ "link": "#",
+ "body": "<p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>\n<ul>\n<li>Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</li>\n<li>Donec id elit non mi porta gravida at eget metus.</li>\n<li>Nulla vitae elit libero, a pharetra augue.</li>\n</ul>\n<p>Etiam porta <em>sem malesuada magna</em> mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.</p>\n<p>Donec ullamcorper nulla non metus auctor fringilla. Nulla vitae elit libero, a pharetra augue.</p>"
+}]
@@ -93,16 +93,6 @@ h6, .h6 {
color: #999;
}
-
-/*
- * Main column and sidebar layout
- */
-
-.blog-main {
- font-size: 18px;
- line-height: 1.5;
-}
-
/* Sidebar modules for boxing content */
.sidebar-module {
padding: 15px;

0 comments on commit 7188342

Please sign in to comment.