Advertisement
Guest User

Untitled

a guest
May 30th, 2015
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. /**
  2.  
  3. USAGE:
  4.  
  5. <script src="riot+compiler.min.js"></script>
  6. <script src="riot.view.js"></script>
  7. <script type="riot/tag" src="my-tag.tag"></script>
  8.  
  9. <div riot-view>
  10.  
  11. Random: { random }
  12.  
  13. <my-tag></my-tag>
  14.  
  15. <button onclick="{ updaterandom }">Update Random</button>
  16.  
  17. <script type="view/script">
  18.  
  19. this.random = Math.random();
  20.  
  21. updaterandom() {
  22. this.random = Math.random();
  23. }
  24.  
  25. </script>
  26. </div>
  27.  
  28. **/
  29.  
  30. (function(riot, d){
  31.  
  32. if (!riot || !riot.compile) {
  33. return;
  34. }
  35.  
  36. d.writeln('<style>[riot-view]{display:none}</style>');
  37. d.writeln('<script type="riot/tag"></script>');
  38.  
  39. riot.initViews = (function(views, view, vid, tag, ele, i) {
  40.  
  41. return function() {
  42.  
  43. views = d.querySelectorAll('[riot-view]');
  44.  
  45. for (i=0;i<views.length;i++) {
  46.  
  47. view = views[i];
  48. vid = viewuid();
  49. tag = ("<"+vid+">\n" + view.innerHTML + "\n</"+vid+">").replace(' type="view/script"', '');
  50. ele = d.createElement(view.tagName);
  51.  
  52. copyattrs(view, ele);
  53. riot.compile(tag);
  54.  
  55. view.parentNode.insertBefore(ele, view);
  56. view.parentNode.removeChild(view);
  57. riot.mount(ele, vid);
  58. }
  59. };
  60.  
  61. })();
  62.  
  63. d.addEventListener('DOMContentLoaded', function(event) {
  64. riot.compile(riot.initViews);
  65. });
  66.  
  67. function copyattrs(src, target) {
  68.  
  69. for (var i = 0, atts = src.attributes, n = atts.length; i < n; i++) {
  70. if (atts[i].name == 'riot-view') continue;
  71. target.setAttribute(atts[i].name, atts[i].value);
  72. }
  73. }
  74.  
  75. function viewuid() {
  76.  
  77. return 'view-xxxxxxxx'.replace(/[x]/g, function(c) {
  78. var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
  79. return v.toString(16);
  80. });
  81. }
  82.  
  83. })(riot, document);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement