時間:2023-09-28 12:42:01 | 來源:網站運營
時間:2023-09-28 12:42:01 來源:網站運營
想發(fā)表看法?來看看如何使用LeanCloud開發(fā)網頁上簡易的評論留言功能:學習筆記:使用LeanCloud開發(fā)網頁上簡易的評論留言功能<!-- 存儲服務 --><script src="//cdn.jsdelivr.net/npm/leancloud-storage@3.13.2/dist/av-min.js"></script>
如果使用了CDN加載LeanCloud的SDK,那么第一步需要進行初始化:var APP_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';var APP_KEY = 'xxxxxxxxxxxxxxxxxxxxx';AV.init({ appId: APP_ID, appKey: APP_KEY});
值得一提的是,在LeanCloud首頁的快速入門項中關于初始化一項所給的示例則會自動替換成我們當前應用的APP_ID和APP_Key??焖偃腴T的鏈接在這里:quickStart 。<div class="message"> <h1>Comment</h1> <hr> <ul class="messageList"></ul> <form action=""> <label for="">name</label> <input type="text" name="name"> <label for="">comment</label> <input type="text" name="comment"> <input type="submit" value="submit"> </form></div>
首先我們要完成的功能是點擊submit提交按鈕后,兩個input標簽輸入的內容能夠上傳至我們在LeanCloud新建的數(shù)據表Comment中。所以很顯然我們需要綁定form表單的submit事件,實現(xiàn)代碼如下:var form = document.querySelector('div.message>form'); form.addEventListener('submit',(e)=>{ // 首先要阻止 form表單默認功能 e.preventDefault(); // 在LeanCloud中已經創(chuàng)建了 Comment 數(shù)據表 var Comment = AV.Object.extend('Comment'); var c = new Comment(); let name = document.querySelector('input[name=name]').value; let comment = document.querySelector('input[name=comment]').value; c.save({ 'name': name, 'comment':comment }).then(function(object) { // 將數(shù)據新增到頁面上 let ul = document.querySelector('.messageList'); let li = document.createElement('li'); li.innerText = name+' : '+comment; ul.appendChild(li); // 將兩個input輸入框的內容清空 document.querySelector('input[name=name]').value = ''; document.querySelector('input[name=comment]').value = ''; }) })
關于此段代碼,需要說明的是對于form表單來說,每次提交都會刷新頁面所以需要阻止form表單的默認功能,即 e.preventDefault();
。var query = new AV.Query('Todo'); query.find().then(function (todos) { todos.forEach(function(todo) { todo.set('status', 1); }); return AV.Object.saveAll(todos); }).then(function(todos) { // 更新成功 }, function (error) { // 異常處理 });
如果將 query.find()
的結果打印在控制臺上,我們就知道其結果是一個數(shù)組,并且數(shù)組的每一項的attributes中則存放著我們存儲的用戶留言名以及留言信息。我們只需要將數(shù)據庫中的數(shù)據生成在頁面上即可,代碼如下:var query = new AV.Query('Comment'); query.find().then((e)=>{ let array = e.map((item)=>{return item.attributes}); let ul = document.querySelector('.messageList'); array.forEach((e)=>{ let li = document.createElement('li'); li.innerText = e.name+' : '+e.comment; ul.appendChild(li); }) })
!function () { var view = document.querySelector('div.message'); var model = { init:function () { var APP_ID = 'xxxxxxxxxxx-xxxxxx'; var APP_KEY = 'xxxxxxxxxxxxxx'; AV.init({ appId: APP_ID, appKey: APP_KEY }); }, // 獲取數(shù)據 fetch:function () { var query = new AV.Query('Comment'); return query.find()// 返回 Promise對象 }, // 保存數(shù)據 save:function (name,comment) { var Comment = AV.Object.extend('Comment'); var c = new Comment(); return c.save({ 'name': name, 'comment': comment }) // 返回 Promise對象 } }; var controller = { view:null, model:null, init: function(view,model) { this.view = view; this.model = model; this.model.init(); this.loadMessage(); this.bindEvents(); }, bindEvents:function(){ var form = this.view.querySelector('form'); form.addEventListener('submit',(e)=>{ e.preventDefault(); this.saveMessage(); }) }, saveMessage:function(){ let name = this.view.querySelector('input[name=name]').value; let comment = this.view.querySelector('input[name=comment]').value; this.model.save(name,comment) .then(function(object) { // 將數(shù)據新增到頁面上 let ul = this.view.querySelector('.messageList'); let li = this.view.createElement('li'); li.innerText = name+' : '+comment; ul.appendChild(li); // 將兩個input輸入框的內容清空 this.view.querySelector('input[name=name]').value = ''; this.view.querySelector('input[name=comment]').value = ''; }) }, loadMessage:function(){ this.model.fetch() .then((e)=>{ let array = e.map((item)=>{return item.attributes}); let ul = document.querySelector('.messageList'); array.forEach((e)=>{ let li = document.createElement('li'); li.innerText = e.name+' : '+e.comment; ul.appendChild(li); }) }) } } controller.init.call(controller,view,model);}.call()
關鍵詞:簡易,發(fā)網,留言,評論,功能,看法,發(fā)表,使用