knockout.jsでDOMから値をボタンなしで取得

  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>knockout.jsでDOMから値をボタンなしで取得</title>
  6. <script type="text/javascript" src="jquery-1.5.1.min.js"></script>
  7. <script type="text/javascript" src="knockout-2.1.0beta.js"></script>
  8. <style type="text/css">
  9. td, th{
  10.   border:1px solid #ccc;
  11. }
  12. </style>
  13. <script type="text/javascript">
  14.   $(document).ready(function () {
  15.     ko.applyBindings(new ViewModel());
  16.   });
  17.   function ViewModel() {
  18.     var self = this;
  19.     self.jsonTemporary = {};
  20.     self.jsonData = ko.observable();
  21.     self.tempTaste = ko.observable();
  22.     this.viewTaste = ko.computed( function()
  23.     {
  24.       return self.tempTaste();
  25.     }, this);
  26.     // 表示
  27.     self.GotoView = function(json) {
  28.       this.jsonData(json);
  29.       
  30.       this.taste = $(".span")[0].innerText;
  31.       self.tempTaste(this.taste);
  32.     };
  33.     // デフォルトでの表示:元データを読込んでおく
  34.     $.getJSON("./testdata/testdataA.txt", {}, function(json){
  35.       json["taste"] = "";
  36.       
  37.       self.jsonTemporary = json; // 何回も読込みされるのがイヤなので保管しておく
  38.       self.GotoView(self.jsonTemporary);
  39.     });
  40.   }
  41. </script>
  42. </head>
  43. <body>
  44. <h1>knockout.jsでDOMから値をボタンなしで取得</h1>
  45. <div>
  46.   <table data-bind="visible: jsonData()">
  47.     <thead><tr><th>品名</th><th>金額</th><th>味</th><th>ボタン</th></thead>
  48.     <tbody data-bind="with: jsonData">
  49.       <tr>
  50.         <td data-bind="text: name"></td>
  51.         <td data-bind="text: price"></td>
  52.         <td data-bind="text: $root.viewTaste"></td>
  53.         <td>
  54.           <span class="span">味噌</span>
  55.         </td>
  56.       </tr>
  57.     </tbody>
  58.   </table>
  59. </div>
  60. <div style="font-size:10pt;text-align:right;margin-top:0.5em;">
  61. <a href="//tips.recatnap.info/" target="_top">PCスキルの小技・忘却防止メモ</a> -
  62. <a href="//tips.recatnap.info/wiki/" target="_top">PCスキルの小技・忘却防止メモのまとめ(wiki)</a>
  63. </div>
  64. <div style="font-size:10pt;text-align:center;margin-top:0.5em;padding:0.5em;border-top:1px solid #ccc;">
  65. Copyright &copy; 2009 by PCスキルの小技・忘却防止メモ. All rights reserved.
  66. </div>
  67. </body>
  68. </html>