我正在開發一個應用程序,使用slim,backbone.js和jquery mobile以及MySQL後端。backbone.js,views和routing
工作流是沿着線:
1)搜索一個單向模塊。 2)列表匹配模塊。 3)選擇並查看模塊詳細信息頁面。 4)列出與模塊相關的講師。 5)選擇並查看講師。
我有第1步到第4步完成,但無法獲得演講者詳細信息頁面顯示。我想我可能會傳遞一個id到錯誤的API調用中,或者我的路由被搞砸了。
在我的index.php我有API調用的列表:
$應用=新的超薄();
$ app-> get('/ modules','getModules'); $ app-> get('/ modules /:id','getModule'); $ app-> get('/ modules/search /:query','getModulesByName'); $ app-> get('/ modules /:id/students','getStudents'); $ app-> get('/ modules /:id/lecturers','getLecturers'); $ app-> get('/ modules/lecturers /:id/lecturer','getLecturer');
最後兩條涉及到拉取與模塊相關聯的講師名單,然後在您點擊講師時拉出講師,顯示詳細信息。
getLecturers作品,並在這裏以供參考:
功能getLecturers($ ID){$ SQL =「選擇l.staffNumber,l.firstName,l.lastName,l.moduleNo1,L。 moduleNo2,l.email,m.moduleNo from lecturertable l,moduletable m 其中m.moduleNo =:id AND(l.moduleNo1 =:id或l.moduleNo2 =:id)「;
try { $db = getConnection(); $stmt = $db->prepare($sql); $stmt->bindParam("id", $id); $stmt->execute(); $lecturer = $stmt->fetchAll(PDO::FETCH_OBJ); $db = null; if (!isset($_GET['callback'])) { echo json_encode($lecturer); } else { echo $_GET['callback'] . '(' . json_encode($lecturer) . ');'; } } catch(PDOException $e) { echo '{"error":{"text":'. $e->getMessage() .'}}'; } }
getLecturer(單)是在這裏:
功能getLecturer($ ID){$ SQL =「選擇l.staffNumber,l.firstName,l.lastName,l.moduleNo1 ,l.moduleNo2,l.email from lecturertable l where l.staffNumber =:id「;
try { $db = getConnection(); $stmt = $db->prepare($sql); $stmt->bindParam("id", $id); $stmt->execute(); $lecturer = $stmt->fetchObject(); $db = null; if (!isset($_GET['callback'])) { echo json_encode($lecturer); } else { echo $_GET['callback'] . '(' . json_encode($lecturer) . ');'; } } catch(PDOException $e) { echo '{"error":{"text":'. $e->getMessage() .'}}'; } }
這裏是我的航線main.js:
變種AppRouter = Backbone.Router.extend({
routes:{ "":"list", "list":"list", "modules/:id":"moduleDetails", "modules/:id/students":"moduleStudents", "modules/:id/lecturers":"moduleLecturers", "modules/:id/lecturers/:id/lecturer":"lecturerDetails" },
和匹配moduleLecturers和lecturerDetails功能:
moduleLecturers:function(id){ var module = new Module({id:id}); module.lecturers。取(); this.changePage(new ModuleLecturersPage({model:module.lecturers})); },
lecturerDetails:function (id) { var lecturer = new Lecturer({id:id}); var self = this; module.lecturers.lecturer.fetch({ success:function (data) { self.changePage(new LecturerView({model:data})); } }); },
然後我有講師和講師機型,具有講師集合一起:
window.Lecturers = Backbone.Model.extend({
urlRoot:"../api/lecturers", initialize:function() { this.lecturers = new lecturersCollection(); this.lecturers.url = '../api/modules/' + this.id + '/lecturers'; }
});
window.lecturersCollection = Backbone.Collection.extend({
model:Lecturers, url:"../api/lecturers",
});
//新
window.Lecturer = Backbone.Model.extend({
urlRoot:"../api/lecturer",
});
和指向 '講師-細節' HTML模板,這是不表示一個講師視圖:
window.LecturerView = Backbone.View.extend({
initialize:function() { this.template = _.template(tpl.get('lecturer-details')); }, render:function (eventName) { $(this.el).html(this.template(this.model.toJSON())); return this; }
});
講師列表項,其在應該得到的詳細視圖,以顯示抽頭時,包含鏈接:HREF = '#模塊/ <%= moduleNo%> /#講師/ <%= staffNumber%>'
雖然URL似乎是在瀏覽器中正確的是(... jquerymobile /#模塊/ 999003 /#講師/ 123001)講師詳細頁面只是沒有顯示。
我已經打破我的頭,這一個幾天的 - 如果任何人能發現任何東西出來的地方,我將不勝感激!