2013-04-05 96 views
0

我正在開發一個應用程序,使用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)講師詳細頁面只是沒有顯示。

我已經打破我的頭,這一個幾天的 - 如果任何人能發現任何東西出來的地方,我將不勝感激!

回答

1

不能使用雙主題標籤,只要解決您的鏈接:

您有:

href='#modules/<%= moduleNo %>/#lecturers/<%= staffNumber %>' 

的權利必須是:

href='#modules/<%= moduleNo %>/lecturers/<%= staffNumber %>'