1 <section data-am-widget="accordion" class="am-accordion am-accordion-default"> 2 <!-- 這裏面還有代碼,本例的大概意思就是不寫JS代碼,直接調用Web組件。 --> 3 </section>
示例02.Web組件-經過模板來調用-示例1 (請下載附件查看示例)html
1 <!-- handlebars.js 是一個開源的js庫,用於在網頁上實現語義模板。 --> 2 <script src="assets/js/handlebars.min.js"></script> 3 <!-- 妹子UI調用 handlebars 的輔助類 --> 4 <script src="assets/js/amazeui.widgets.helper.js"></script>
示例中關鍵代碼2(定義一個模板)(話說這個模板也沒啥實際意義,但官方的demo就是這麼寫的,我只是移植了一下):前端
1 <script type="text/x-handlebars-template" id="my-tpl"> 2 {{>accordion accordionData}} 3 </script>
示例中關鍵代碼3(調用JS代碼使其工做):學習
1 var $tpl = $('#my-tpl'); //獲得原始模板 2 var template = Handlebars.compile($tpl.text()), //獲得編譯後的模板 3 //...這裏定義了數據...代碼較多...略... 4 var html = template(data); //傳入數據,運行模板,獲得結果 5 var $tpl.before(html); //顯示結果
1 var template = Handlebars.compile('{{>accordion}}'), //獲得編譯後的模板 (字符串就算是原始模板了) 2 var html = template(data.accordionData); //傳入數據,運行模板,獲得結果 3 $("#div1").before(html); //顯示結果
1 <!-- 自定義原始模板 --> 2 <script type="text/x-handlebars-template" id="demo-template"> 3 //這裏還有不少代碼,由於不關鍵就省略了... 4 <!-- 關鍵代碼:添加圖標 icon 屬性 --> 5 {{#if icon}}<img src="{{icon}}" style="width:20px;" />{{/if}} 6 //這裏還有不少代碼,由於不關鍵就省略了... 7 </script>
示例中關鍵代碼3(調用JS使其工做):ui
1 var demoData = { //定義數據 2 "content": [..省略.., { 3 "title": "標題二", 4 "content": "內容二", 5 "icon": "assets/i/favicon.png" //關鍵:多出一個icon屬性 6 }, ..省略..] 7 }; 8 var demoTemplate = Handlebars.compile($("#demo-template").html()); //獲得編譯後的模板 9 var demoHtml = demoTemplate(demoData); //傳入數據,運行模板,獲得結果 10 $("#div1").html(demoHtml); //顯示結果
1 //註冊一個新組件,名叫:hr-accordion 2 hbs.registerPartial('hr-accordion', '\ 3 {{#this}}\ 4 <section data-am-widget="accordion" class="am-accordion {{#if theme}}am-accordion-{{theme}}{{else}}am-accordion-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}" {{#if id}} id="{{id}}" {{/if}} data-am-accordion=\'{ {{#if options.multiple}}"multiple": true{{/if}} }\'>\ 5 {{#each content}}\ 6 <dl class="am-accordion-item{{#if active}} am-active{{/if}}{{#if disabled}} am-disabled{{/if}}">\ 7 <dt class="am-accordion-title" style="color:#0094ff;">\ 8 <!-- 添加圖標的關鍵代碼 -->\ 9 {{#if icon}}<img src="{{icon}}" style="width:20px;" />{{/if}}\ 10 {{{title}}}\ 11 </dt>\ 12 <dd class="am-accordion-bd am-collapse {{#if active}}am-in{{/if}}">\ 13 <div class="am-accordion-content">\ 14 {{{content}}}\ 15 </div>\ 16 </dd>\ 17 </dl>\ 18 {{/each}}\ 19 </section>\ 20 {{/this}}');
示例中關鍵代碼2(引用相關js文件):this
1 <!-- handlebars.js 是一個開源的js庫,用於在網頁上實現語義模板。 --> 2 <script src="assets/js/handlebars.min.js"></script> 3 <!-- 華瑞手風琴組件,調用 handlebars.js 的輔助類 --> 4 <script src="assets/js/huarui.accordion.helper.js"></script>
示例中關鍵代碼3(調用JS使其工做):spa
1 var demoData = { //定義數據 2 "content": [..略.., { 3 "title": "標題二", 4 "content": "內容二", 5 "icon": "assets/i/favicon.png" //關鍵:多出一個icon屬性 6 }, ..略..] 7 }; 8 //獲得編譯後的模板,傳入數據,運行模板,獲得結果 9 var demoHtml = Handlebars.compile('{{>hr-accordion}}')(demoData); 10 $("#div1").html(demoHtml); //顯示結果