0

어떻게 작동하는지 이해하기 위해 매우 기본적인 백본 응용 프로그램을 만들었습니다.백본 : 라우터를 통해보기에서 하나의 모델 데이터를 가져와 표시하는 방법

라우터에서 나는 URL에 ID를 전달하여 전체 컬렉션이 아닌 사용자 만 모델을 표시하고 싶습니다. 어떻게 수행합니까?

예를 들어, someapp.com/app/#user/2을하고 싶습니다. 그러면 사용자 2의 세부 정보 만 표시됩니다.

jsfiddle

// router 
var ViewsRouter = Backbone.Router.extend({ 

    routes: { 
    '': 'viewOne', 
    'one': 'viewOne', 
    'two': 'viewTwo', 
    'user/:id': 'user' 
    }, 

    viewOne: function() { 
    var view = new TheViewOne({ model: new TheModel }); 
    }, 

    viewTwo: function() { 
    var view = new UserView({ model: new TheModel }); 
    }, 

    user: function(id) { 
    // how to get just 1 user with the corresponding id passed as argument 
    // and display it??? 
    } 
}); 

많은 감사에서 내 작품을 참조하십시오.

답변

1

https://github.com/coding-idiot/BackboneCRUD

나는 초보자를위한 어떤 백엔드 물건과 함께 완벽한 백본 CRUD를 작성했습니다. 아래는 part으로 사용자를 컬렉션에서 가져 와서 표시/렌더링합니다.

보기

var UserEditView = Backbone.View.extend({ 
     render: function(options) { 
      if (options && options.id) { 
       var template = _.template($("#user-edit-template").html(), { 
        user: userCollection.get(options.id) 
       }); 
       this.$el.html(template); 
      } else { 
       var template = _.template($("#user-edit-template").html(), { 
        user: null 
       }); 
       // console.log(template); 
       this.$el.html(template); 
      } 
      return this; 
     }, 

라우터

router.on('route:editUser', function(id) { 
    console.log("Show edit user view : " + id); 
    var userEditView = new UserEditView({ 
     el: '.content' 
    }); 
    userEditView.render({ 
     id: id 
    }); 
}); 

업데이트

특히, 코드에 집착, 라우터가 같은 것을 볼 것이다 :

user: function(id) { 
    var view = new UserView({ model: userCollection.get(id) }); 
    } 
+0

답장을 보내 주셔서 감사합니다. 그래도 1 가지. 나는이 코드를 외부의 라우터 정의 안에 넣고 코드를 외부에두고 싶다. 그리고 일반적으로 '라우터'는 여전히 혼란 스럽다. 나는 router.on (route : ...)를 원하지 않는다. 그러나 나는'router' 객체 안에 정의 된'user : function (id) {}'를 원한다. Btw, 나는 Backbone에 대해 새롭다.이 'Router'개념은 나를 위해 파악하기가 약간 어렵다. – Shaoz

+0

var userEditView = 새 UserEditView(); userEditView.render ({ id : id }); 라우터에서 이것을 사용하십시오. 더 나은 통찰력을 제공하기 위해 내 대답을 편집했습니다. –

+0

대단히 고마워, 내가 원했던대로 작동한다. – Shaoz

관련 문제