UNPKG

avalon2

Version:

an elegant efficient express mvvm framework

79 lines (70 loc) 2.11 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Document</title> <script type="text/javascript" src="./dist/avalon.js"></script> </head> <body> <div id="aaa"> </div> <script> function heredoc(fn) { return fn.toString().replace(/^[^\/]+\/\*!?\s?/, ''). replace(/\*\/[^\/]+$/, '').trim().replace(/>\s*</g, '><') } function getInnerHTML(el){ return el.innerHTML.toLowerCase().replace(/\s*class=""/,'') } var textProp = 'textContent' in document ? 'textContent': 'innerText' function fireClick(el) { if (el.click) { el.click() }else { //https://developer.mozilla.org/samples/domref/dispatchEvent.html var evt = document.createEvent('MouseEvents') evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); !el.dispatchEvent(evt); } } var div = document.getElementById('aaa') var expect = function(a){ return { toBe: function(b){ console.log(a, b, a=== b) } } } div.innerHTML = heredoc(function () { /* <select ms-controller='attr3' ms-attr='{multiple:@a}'> <option>000</option> <option ms-attr='{selected:@b}'>111</option> <option>222</option> <option>333</option> </select> */ }) vm = avalon.define({ $id: 'attr3', a: true, b: true }) avalon.scan(div) setTimeout(function(){ var opts = div.getElementsByTagName('option') expect(div.children[0].multiple).toBe(true) expect(opts[1].selected).toBe(true) expect(div.children[0].type).toBe('select-multiple') vm.a = false vm.b = false setTimeout(function () { expect(div.children[0].multiple).toBe(false) expect(div.children[0].type).toBe('select-one') expect(opts[1].selected).toBe(false) }, 100) }) </script> </body> </html>