mvvm.html 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>MVVM</title>
  6. </head>
  7. <body>
  8. <div id="mvvm-app">
  9. <input type="text" v-model="someStr">
  10. <input type="text" v-model="child.someStr">
  11. <!-- <p v-class="className" class="abc">
  12. {{someStr}}
  13. <span v-text="child.someStr"></span>
  14. </p> -->
  15. <p>{{ getHelloWord }}</p>
  16. <p v-html="htmlStr"></p>
  17. <button v-on:click="clickBtn">change model</button>
  18. </div>
  19. <script src="http://cdn.bootcss.com/vue/1.0.25/vue.js"></script>
  20. <script src="./js/observer.js"></script>
  21. <script src="./js/watcher.js"></script>
  22. <script src="./js/compile.js"></script>
  23. <script src="./js/mvvm.js"></script>
  24. <script>
  25. var vm = new MVVM({
  26. el: '#mvvm-app',
  27. data: {
  28. someStr: 'hello ',
  29. className: 'btn',
  30. htmlStr: '<span style="color: #f00;">red</span>',
  31. child: {
  32. someStr: 'World !'
  33. }
  34. },
  35. computed: {
  36. getHelloWord: function() {
  37. return this.someStr + this.child.someStr;
  38. }
  39. },
  40. methods: {
  41. clickBtn: function(e) {
  42. var randomStrArr = ['childOne', 'childTwo', 'childThree'];
  43. this.child.someStr = randomStrArr[parseInt(Math.random() * 3)];
  44. }
  45. }
  46. });
  47. vm.$watch('child.someStr', function() {
  48. console.log(arguments);
  49. });
  50. </script>
  51. </body>
  52. </html>