2011-11-29 3 views
0

backbone.js을 사용하여 이벤트를 라우팅하고 DOM 요소에 바인딩합니다. 이벤트 트리거 및 JSON 서버에서 가져온 것입니다.해시 태그 이중 쿼리?

일반적으로 항목을 클릭하면 서버에 항목의 id 속성이 포함 된 POST 요청이 전송됩니다. 사용자가 뒤로 버튼을 명중하거나 직접 페이지에 액세스 한 경우

그러나, 나는 단지 #item_name있을 것입니다, #item_name 대신 #id

의 표시 URL에 해시를 싶습니다 방지하는 방법은 무엇입니까 이 경우 이중 쿼리를 수행합니다. (항목 ID를 먼저 쿼리 한 다음 실제 쿼리를 쿼리)

그렇지 않으면 직접 연결 페이지로드 성능에 심각한 영향을 줍니까?

답변

0

이 기능이 마음에 드시면 item_name이 데이터베이스에서 고유해야합니다. 이미 이드의 일종입니다. 백본에서 모든 모델의 항목 ID로 사용해야하는 속성을 설정할 수 있습니다. 백본이 가진 항목 URL을 구축 할 것입니다) (지금로드와 같은 모델 기능을 사용하는 경우

Item.Model.prototype.idAttribute = 'item_name'; 

() 또는 저장 : 귀하의 경우

Backbone.Model.prototype.idAttribute = 'some_model_property'; 

당신은 같은 전화를 할 것입니다 id 대신 item_name. 당신은 지금 자신의 ITEM_NAMES하여 컬렉션에서 그 모델을 가져올 수 있다는 외에도

POST to /item/item_name 
GET /item/item_name 

:

var model = myCollection.get(item_name); 

유일한 문제는 당신이 모델에 대해 하나의 id 속성을 가질 수 있다는 것입니다. 따라서 실제 ID를 해당 모델의 id 속성으로 사용하는 기능이 느슨해집니다.

+0

감사합니다. 난 이후에 두 번 전화를 할 것 같아요, 내가 할 때. navigate(), 그것은 # id를 사용하여 전화를하고있을거야. 감사! – michael