คำถามติดแท็ก backbone.js

Backbone.js เป็นเฟรมเวิร์ก JavaScript ที่มีอินเทอร์เฟซ RESTful JSON และอิงตามกระบวนทัศน์การออกแบบแอปพลิเคชัน model – view – Presenter (MVP)

6
Backbone.js: รับเส้นทางปัจจุบัน
ใช้ Backbone เป็นไปได้ไหมที่ฉันจะได้รับชื่อของเส้นทางปัจจุบัน ฉันรู้วิธีผูกกับการเปลี่ยนเส้นทางเหตุการณ์ แต่ฉันต้องการที่จะสามารถกำหนดเส้นทางปัจจุบันในเวลาอื่น ๆ ในระหว่างการเปลี่ยนแปลง
137 backbone.js 

10
วิธีการแสดงผลและผนวกมุมมองย่อยใน Backbone.js
ฉันมีการตั้งค่ามุมมองที่ซ้อนกันซึ่งสามารถเข้าถึงแอปพลิเคชันของฉันได้ค่อนข้างลึก มีหลายวิธีที่ฉันสามารถคิดเริ่มต้นแสดงผลและต่อท้ายมุมมองย่อยได้ แต่ฉันสงสัยว่าแนวทางปฏิบัติทั่วไปคืออะไร นี่คือสองสามข้อที่ฉันคิดไว้: initialize : function () { this.subView1 = new Subview({options}); this.subView2 = new Subview({options}); }, render : function () { this.$el.html(this.template()); this.subView1.setElement('.some-el').render(); this.subView2.setElement('.some-el').render(); } ข้อดี:คุณไม่ต้องกังวลเกี่ยวกับการรักษาคำสั่ง DOM ที่ถูกต้องด้วยการต่อท้าย มุมมองจะเริ่มต้นในช่วงต้นดังนั้นจึงไม่มีสิ่งที่ต้องทำทั้งหมดพร้อมกันในฟังก์ชันการแสดงผล จุดด้อย:คุณถูกบังคับให้มอบหมายงานใหม่ () ซึ่งอาจมีค่าใช้จ่ายสูง? ฟังก์ชันการแสดงผลของมุมมองพาเรนต์ยุ่งเหยิงกับการแสดงผลมุมมองย่อยทั้งหมดที่ต้องเกิดขึ้น? คุณไม่มีความสามารถในการตั้งค่าtagNameองค์ประกอบดังนั้นเทมเพลตจำเป็นต้องดูแล tagNames ที่ถูกต้อง อีกวิธีหนึ่ง: initialize : function () { }, render : function () { …

8
เว็บไซต์ JS และ SEO แบบ“ หน้าเดียว”
มีเครื่องมือเจ๋ง ๆ มากมายสำหรับการสร้างเว็บไซต์จาวาสคริปต์แบบ "หน้าเดียว" ที่มีประสิทธิภาพในปัจจุบัน ในความคิดของฉันสิ่งนี้ถูกต้องแล้วโดยปล่อยให้เซิร์ฟเวอร์ทำหน้าที่เป็น API (และไม่มีอะไรเพิ่มเติม) และให้ลูกค้าจัดการสิ่งที่สร้าง HTML ทั้งหมด ปัญหาของ "รูปแบบ" นี้คือการขาดการสนับสนุนเครื่องมือค้นหา ฉันสามารถคิดถึงวิธีแก้ปัญหาสองข้อ: เมื่อผู้ใช้เข้าสู่เว็บไซต์ให้เซิร์ฟเวอร์แสดงผลหน้าเว็บเหมือนกับที่ลูกค้าทำตามการนำทาง ดังนั้นถ้าฉันไปhttp://example.com/my_pathที่เซิร์ฟเวอร์โดยตรงจะทำให้สิ่งเดียวกันกับไคลเอนต์ถ้าฉัน/my_pathผ่าน pushState ให้เซิร์ฟเวอร์จัดทำเว็บไซต์พิเศษเฉพาะสำหรับบอตของเครื่องมือค้นหา หากผู้ใช้ทั่วไปเข้าชมhttp://example.com/my_pathเซิร์ฟเวอร์ควรให้เว็บไซต์เวอร์ชันใหญ่แก่ JavaScript แต่ถ้าบอตของ Google เข้าชมเซิร์ฟเวอร์ควรให้ HTML ที่น้อยที่สุดพร้อมเนื้อหาที่ฉันต้องการให้ Google จัดทำดัชนี วิธีแรกที่จะกล่าวถึงต่อไปที่นี่ ฉันทำงานเกี่ยวกับเว็บไซต์ที่ทำสิ่งนี้และมันก็ไม่ได้เป็นประสบการณ์ที่ดีนัก ไม่ใช่ DRY และในกรณีของฉันฉันต้องใช้เครื่องมือแม่แบบที่แตกต่างกันสองแบบสำหรับไคลเอนต์และเซิร์ฟเวอร์ ฉันคิดว่าฉันได้เห็นโซลูชันที่สองสำหรับเว็บไซต์ Flash ที่ดีแล้ว ฉันชอบวิธีนี้มากกว่าวิธีแรกและด้วยเครื่องมือที่เหมาะสมบนเซิร์ฟเวอร์มันสามารถทำได้ค่อนข้างลำบาก ดังนั้นสิ่งที่ฉันสงสัยจริงๆคือต่อไปนี้: คุณนึกถึงทางออกที่ดีกว่านี้ได้ไหม? อะไรคือข้อเสียของโซลูชันที่สอง? หาก Google พบว่าฉันไม่ได้ให้บริการเนื้อหาเดียวกันกับ bot ของ Google ในฐานะผู้ใช้ทั่วไปฉันจะต้องถูกลงโทษในผลการค้นหาหรือไม่?

12
เทมเพลตภายนอกในเครื่องหมายขีดล่าง
ฉันใช้แม่แบบขีดล่าง เป็นไปได้ที่จะแนบไฟล์ภายนอกเป็นเทมเพลต ? ใน Backbone View ฉันมี: textTemplate: _.template( $('#practice-text-template').html() ), initialize: function(){ this.words = new WordList; this.index = 0; this.render(); }, ใน html ของฉันคือ: <script id="practice-text-template" type="text/template"> <h3>something code</h3> </script> มันทำงานได้ดี แต่ฉันต้องการแม่แบบภายนอก ฉันลอง: <script id="practice-text-template" type="text/template" src="templates/tmp.js"> หรือ textTemplate: _.template( $('#practice-text-template').load('templates/tmp.js') ), หรือ $('#practice-text-template').load('templates/tmp.js', function(data){ this.textTemplate = _.template( data …

1
Backbone.js: จะรับดัชนีของโมเดลใน Backbone Collection ได้อย่างไร
มีวิธีค้นหาดัชนีของโมเดลภายในคอลเลกชันหรือไม่? สมมติว่าในมุมมองที่เรามีโมเดลที่เรากำลังทำอยู่โมเดลนั้นสามารถคายดัชนีของมันออกมาในคอลเลกชั่นที่อยู่ในปัจจุบันได้หรือไม่? ฉันต้องการทำเช่นนี้เพราะฉันต้องการเข้าถึงโมเดลที่สูงกว่าหรือต่ำกว่าเป้าหมายปัจจุบัน กล่าวอีกนัยหนึ่งคือ: index = this.model.index modelAbove = this.collection.at( index-1 ) ข้อมูลของฉันเป็นชุดที่ซ้อนกันฉันจึงสามารถค้นหาในคอลัมน์ "lft" หรือ "rgt" ได้ แต่ฉันไม่ต้องการสร้างวงล้อใหม่หาก Backbone มีข้อมูลนี้อยู่แล้ว
119 backbone.js 

12
Nested Models ใน Backbone.js วิธีการเข้าใกล้
ฉันได้รับ JSON ต่อไปนี้จากเซิร์ฟเวอร์ ด้วยเหตุนี้ฉันจึงต้องการสร้างโมเดลที่มีโมเดลซ้อนกัน ฉันไม่แน่ใจว่าวิธีใดที่จะบรรลุสิ่งนี้ //json [{ name : "example", layout : { x : 100, y : 100, } }] ฉันต้องการให้สิ่งเหล่านี้ถูกแปลงเป็นแบบจำลองกระดูกสันหลังที่ซ้อนกันสองแบบโดยมีโครงสร้างต่อไปนี้: // structure Image Layout ... ดังนั้นฉันจึงกำหนดรูปแบบเค้าโครงดังนี้: var Layout = Backbone.Model.extend({}); แต่สองเทคนิคใด (ถ้ามี) ด้านล่างนี้ที่ฉันควรใช้เพื่อกำหนดรูปแบบรูปภาพ A หรือ B ด้านล่าง? A var Image = Backbone.Model.extend({ initialize: function() { this.set({ 'layout' : …

15
Backbone View: รับช่วงและขยายกิจกรรมจากพาเรนต์
สถานะเอกสารของกระดูกสันหลัง: คุณสมบัติเหตุการณ์อาจถูกกำหนดให้เป็นฟังก์ชันที่ส่งคืนแฮชของเหตุการณ์เพื่อให้ง่ายต่อการกำหนดเหตุการณ์ของคุณทางโปรแกรมรวมทั้งรับช่วงจากมุมมองหลัก คุณสืบทอดเหตุการณ์มุมมองของผู้ปกครองและขยายออกไปอย่างไร มุมมองผู้ปกครอง var ParentView = Backbone.View.extend({ events: { 'click': 'onclick' } }); มุมมองเด็ก var ChildView = ParentView.extend({ events: function(){ ???? } });

5
วิธีการแปลง 1 เป็นจริงหรือ 0 เป็นเท็จเมื่อดึงโมเดล
ฉันมีโมเดลที่ตั้งค่าด้วยการตอบสนอง JSON จากฐานข้อมูล mysql ข้อมูลที่มีการตั้งค่ารูปแบบที่มีจริงหรือเท็จลงในเขตข้อมูลแบบบูล / TINYINT ในฐานข้อมูลซึ่งใช้หรือ10 _.isBooleanในมุมมองของฉันฉันมีผลผูกพันการตรวจสอบว่าสำหรับบูลกับขีด แน่นอนเมื่อโมเดลของฉันได้รับข้อมูลมันจะถูกตั้งค่าด้วย1หรือ0แทนที่จะเป็นจริงหรือเท็จและการ_.isBooleanตรวจสอบล้มเหลว มีอยู่แล้วหรือไม่ที่จะมีการตอบสนอง JSON ของฉันอย่างถูกต้องจาก mysql เป็นค่าบูลีนจริงหรือเท็จแทน1หรือ0หรือควรมีวิธีที่จะให้โมเดลของฉันอัปเดตตัวเองเมื่อดึง (และก่อนที่จะแสดงผลการดู) เพื่อแคสต์trueหรือfalseตาม เป็น 1 หรือ 0 คุณสมบัติ? เช่นข้อมูลของโมเดลของฉันดูเหมือนว่า{"isChecked":"1"}เมื่อไหร่ที่ฉันต้องการ{"isChecked":true} ขอบคุณมากสำหรับคำแนะนำใด ๆ ที่คุณมี!

8
ฉันจะเรียกใช้การเรียกกลับสำเร็จบน model.save () ได้อย่างไร
this.model.save({ success: function(model, response){ console.log('success'); }, error: function(){ console.log('error'); } }) แบบจำลองถูกโพสต์อย่างถูกต้องไปยังเซิร์ฟเวอร์ที่จัดการการบันทึก แต่การเรียกกลับสำเร็จจะไม่เริ่มทำงาน ฉันต้องส่งของกลับจากเซิร์ฟเวอร์หรือไม่?
106 backbone.js 

9
Backbone.js รับและตั้งค่าแอตทริบิวต์วัตถุที่ซ้อนกัน
ฉันมีคำถามง่ายๆเกี่ยวกับฟังก์ชันรับและตั้งค่า Backbone.js 1) ด้วยรหัสด้านล่างฉันจะ 'get' หรือ 'set' obj1.myAttribute1 โดยตรงได้อย่างไร? คำถามอื่น: 2) ในโมเดลนอกเหนือจากอ็อบเจ็กต์ค่าเริ่มต้นฉันจะ / ควรประกาศคุณลักษณะอื่น ๆ ของโมเดลของฉันได้ที่ไหนเพื่อให้สามารถเข้าถึงได้ผ่านเมธอด get and set ของ Backbone var MyModel = Backbone.Model.extend({ defaults: { obj1 : { "myAttribute1" : false, "myAttribute2" : true, } } }) var MyView = Backbone.View.extend({ myFunc: function(){ console.log(this.model.get("obj1")); //returns the obj1 object …

8
วิธีที่ดีที่สุดในการจัดระเบียบโค้ด jQuery / JavaScript (2013) [ปิด]
มันยากที่จะบอกว่ากำลังถามอะไรที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือมีวาทศิลป์และไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน7 ปีที่ผ่านมา ปัญหา คำตอบนี้ได้รับคำตอบมาก่อน แต่เก่าและไม่ทันสมัย ฉันมีโค้ดมากกว่า 2,000 บรรทัดในไฟล์เดียวและอย่างที่เราทราบกันดีว่านี่เป็นการปฏิบัติที่ไม่ดีโดยเฉพาะอย่างยิ่งเมื่อฉันกำลังมองหาโค้ดหรือเพิ่มคุณสมบัติใหม่ ๆ ฉันต้องการจัดระเบียบรหัสของฉันให้ดีขึ้นทั้งในตอนนี้และในอนาคต ฉันควรพูดถึงว่าฉันกำลังสร้างเครื่องมือ (ไม่ใช่เว็บไซต์ธรรมดา ๆ ) ที่มีปุ่มมากมายองค์ประกอบ UI การลากวางผู้ฟัง / ตัวจัดการการกระทำและฟังก์ชันในขอบเขตทั่วโลกซึ่งผู้ฟังหลายคนอาจใช้ฟังก์ชันเดียวกัน ตัวอย่างรหัส $('#button1').on('click', function(e){ // Determined action. update_html(); }); ... // Around 75 more of this function update_html(){ .... } ... โค้ดตัวอย่างเพิ่มเติม สรุป ฉันจำเป็นต้องจัดระเบียบรหัสนี้เพื่อการใช้งานที่ดีที่สุดและไม่ต้องทำซ้ำตัวเองและสามารถเพิ่มคุณสมบัติใหม่และอัปเดตโค้ดเก่าได้ ฉันจะทำงานนี้ด้วยตัวเอง ตัวเลือกบางตัวสามารถเป็นโค้ดได้ 100 บรรทัดอื่น …

3
Backbone.js: "ขยาย" ไม่ได้กำหนด?
เพิ่งเริ่มต้นกับ Backbone.js เพียงแค่รวม Backbone (เวอร์ชัน dev / การผลิต) ทำให้เกิดข้อผิดพลาด: Uncaught TypeError: Cannot call method 'extend' of undefined ในบรรทัด 128: // Attach all inheritable methods to the Model prototype _.extend(Backbone.Model.prototype, Backbone.Events,

5
เหตุใดจึงกำหนดฟังก์ชันที่ไม่ระบุตัวตนและส่ง jQuery เป็นอาร์กิวเมนต์
ฉันกำลังดูรหัสสาธิต peepcode ที่ยอดเยี่ยมจาก screencasts backbone.js ในนั้นรหัสกระดูกสันหลังจะอยู่ในฟังก์ชันที่ไม่ระบุชื่อที่ส่งผ่านวัตถุ jQuery: (function($) { // Backbone code in here })(jQuery); ในรหัสกระดูกสันหลังของฉันฉันเพิ่งรวมรหัสทั้งหมดของฉันไว้ในเหตุการณ์ 'พร้อม' jQuery DOM: $(function(){ // Backbone code in here }); ประเด็น / ข้อดีของแนวทางแรกคืออะไร? การทำเช่นนี้จะสร้างฟังก์ชันที่ไม่ระบุชื่อซึ่งจะถูกเรียกใช้ทันทีโดยที่วัตถุ jQuery ถูกส่งผ่านเป็นอาร์กิวเมนต์ของฟังก์ชันทำให้มั่นใจได้ว่า $ เป็นวัตถุ jQuery นี่เป็นเพียงจุดเดียว - เพื่อรับประกันว่า jQuery ถูกผูกไว้กับ '$' หรือมีเหตุผลอื่นในการทำเช่นนี้หรือไม่?

5
ลบหลายระเบียนโดยใช้ REST
REST-ful วิธีการลบหลายรายการคืออะไร? กรณีการใช้งานของฉันคือฉันมี Backbone Collection ซึ่งฉันต้องสามารถลบหลายรายการพร้อมกันได้ ตัวเลือกดูเหมือนจะเป็น: ส่งคำขอ DELETE สำหรับทุกๆระเบียน (ซึ่งดูเหมือนจะเป็นความคิดที่ไม่ดีหากมีหลายสิบรายการ) ส่ง DELETE โดยที่ ID ที่จะลบจะถูกรวมเข้าด้วยกันใน URL (เช่น "/ records / 1; 2; 3"); ด้วยวิธีที่ไม่ใช่ REST ให้ส่งออบเจ็กต์ JSON ที่กำหนดเองซึ่งมี ID ที่ทำเครื่องหมายสำหรับการลบ ตัวเลือกทั้งหมดน้อยกว่าอุดมคติ ดูเหมือนว่าจะเป็นพื้นที่สีเทาของการประชุม REST
100 api  rest  backbone.js 

3
Ember.js หรือ Backbone.js สำหรับแบ็กเอนด์พักผ่อน [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันรู้อยู่แล้วว่า ember.js เป็นวิธีที่มีน้ำหนักมากกว่าในทางตรงกันข้ามกับ backbone.js ฉันอ่านบทความมากมายเกี่ยวกับทั้งสองอย่าง ฉันกำลังถามตัวเองว่าเฟรมเวิร์กใดทำงานได้ง่ายกว่าเป็นส่วนหน้าสำหรับแบ็กเอนด์ส่วนที่เหลือของราง สำหรับ backbone.js ฉันเห็นวิธีต่างๆในการเรียกแบ็กเอนด์ส่วนที่เหลือ สำหรับถ่านดูเหมือนว่าฉันจะต้องรวมไลบรารีเพิ่มเติมเช่น 'data' หรือ 'resources' เหตุใดจึงมีห้องสมุดสองแห่งสำหรับสิ่งนี้ แล้วทางเลือกที่ดีกว่าคืออะไร? ไม่มีตัวอย่างมากมายในการเชื่อมต่อส่วนหน้ากับแบ็กเอนด์ด้วย อะไรคือตัวอย่างการทำงานที่ดีสำหรับการพักผ่อนแบ็กเอนด์เรียกสิ่งนี้: URI: ../restapi/topics รับข้อมูลรับรองการตรวจสอบสิทธิ์: admin / รูปแบบที่ถูกต้อง: json

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.