2012-07-21 3 views
0

'좋아요'버튼이있는 이미지 목록이 있습니다. 'Like'버튼을 클릭하면 AYAX 요청 (item_iduser_id 포함)이 서버 측으로 전송되어 Like (likes 테이블에 새 행을 추가하여 item_iduser_id의 값으로 추가)을 기록합니다.

페이지에 표시된 이미지에는 Photo 모델이 사용됩니다. 올바르게 이해하면 이 사용되어 새로운 Photo을 업데이트/추가하려는 경우 '좋아요'를 녹음하는 데 적합하지 않습니다. 따라서 $.get() 또는 $.post()과 같은 것을 사용해야합니다. 이것은 일반적인 방법입니까?

아래 그림과 같이 Like이라는 새 모델을 만들면보기가 복잡해지고 좋아요 버튼 만 템플릿으로 만들 수 있습니다. 새로운 모델을 만드는 것보다 차라리 $.get 방법을 사용했습니다과 유사한 경우

Like = Backbone.Model.extend({ 
    url: 'likes' 
}); 

LikeView = Backbone.View.extend({ 

    template: _.template($('#tpl-like').html()), 

    events: { 
     'click .btn_like': 'like' 
    }, 

    like: function() { 
     this.model.save({ 
      user_id: 1234, 
      post_id: 10000 
     }) 
    } 
}); 

답변

0

는 분명이 응용 프로그램에 따라 다릅니다 만, 여기 내 이유가됩니다.

  • 당신이 만드는 사진 및 사용자 ID를 허용하는 서버 측 자원을 갖고있는 것 같다,

    1. Like이 사람과 사진 사이의 관계 :

      이 경우는 다음과 같은 특징이 보인다 이 관계는 이미

    2. 이며 다른 정보는 아마 그 관계에 붙어 있지 않으며,
    3. 과 같은 중요한 로직을 가지고 있지 않은 것 같습니다.

    사진 개체에 좋아요 수를 포함하는 다른 속성을 추가하면 더 쉽게 처리 할 수 ​​있습니다. 그런 다음 $.get을 사용하여 like을 만들면 200 응답은 사진 개체를 카운트 업 (따라서보기)까지 업데이트합니다. 그런 다음 서버 측은 반환 할 때 같은 수를 포함시켜야합니다.

    여기서는 일단 like이 업데이트되면 업데이트하지 않을 것이라고 가정합니다. 업데이트하거나 삭제해야 할 경우 계속 $.get을 계속 사용할 수 있습니다. 각 요소가 like 리소스의 ID 인 사진 개체에 likes 배열을 추가 할 수 있습니다. 보기에는 배열의 길이가 카운트로 표시되고, 같은 것을 삭제해야하는 경우 ID에 액세스 할 수 있으며 $.post을 사용할 수 있습니다. .push을 사용하여 어레이에 값을 추가하지 마십시오. 백본의 set 메소드를 거치지 않고 이벤트 콜백을받지 않기 때문입니다. 배열을 복제 한 다음 변경 한 다음 밀어 넣고 설정해야합니다.