2013-09-26 6 views
0

URL을 입력 할 때 예상대로 응답하는 애플리케이션에 라우터가 있습니다. exapmple에 대해 www.example.com # search/groupa를 입력하면 적절한 결과가 다시 나타납니다. 검색 기능에서 url을 설정하기 위해 navigate를 호출하여 사용자가 잘라내어 붙여넣고 다른 사용자에게 보낼 수 있도록 시도했습니다. "catch되지 않은 형식 오류 : 개체() 함수를있는 방법 '이동'이 없다 {(이 인수) i.apply 반환}"라우터를 사용하여 URL을 업데이트하십시오.

IEG = new Backbone.Marionette.Application(); 

IEG.addRegions({ 
searchBox: '#searchBox', 
resultBox: '#resultBox', 
modalBox: '#modalBox', 
recipientBox: '#recipientBox', 
confirmBox: '#confirmToggleActive' 
}); 

IEG.vent = _.extend({}, Backbone.Events); 


IEG.vent.on("default", function() { 

var SBV = new SearchBoxView(); 
IEG.searchBox.show(SBV); 
IEG.searchColl = new GroupEntries(); 
IEG.searchColl.fetch({ 
    data: { 
     cmd: 0, //search groups 
     searchStr: null //if null show all groups 
    }, 
    success: function (data) { 
     searchResults = new SearchResultsView({ collection: IEG.searchColl }); 
     IEG.resultBox.show(searchResults); 
    } 
}); 
}); 

IEG.vent.on("searchGroups", function (searchStr) { 
IEG.Router.navigate("search" + searchStr); // CALLING NAVIGATE HERE 
IEG.searchColl.fetch({ 
    data: { 
     cmd: 0, //search groups 
     searchStr: searchStr 
    }, 
    success: function (data) { 
     searchResults = new SearchResultsView({ collection: IEG.searchColl }); 
     IEG.resultBox.show(searchResults); 
    } 
}); 
}); 

IEG.Router = Backbone.Router.extend({ 
routes: { 
    '': 'index', 
    'search/:str': 'search', 
    'edit/:grp': 'edit' 
}, 

index: function() { 
    IEG.vent.trigger("default"); 
}, 

search: function (str) 
{ 
    IEG.vent.trigger("searchGroups",str); 
} 
}); 

$(document).ready(function() { 

    IEG.start(); 
    new IEG.Router; 
    Backbone.history.start(); 
}); 

답변

0

를 문제는 그것을 내가 그렇게하려고 다음과 같은 오류가 나던 작품입니다 Router 클래스의 인스턴스에서는 navigate으로 전화해야하며 현재 수행중인 것처럼 정의가 아닙니다. 이 같은 문서 준비 핸들러의 코드를 업데이트 해보십시오 :이 같은

$(document).ready(function() { 
    IEG.start(); 
    IEG.router = new IEG.Router(); // Store an instance of the router on the Application 
    Backbone.history.start(); 
}); 

그리고 당신의 searchGroups 핸들러를 :

IEG.vent.on("searchGroups", function (searchStr) { 
    IEG.router.navigate("search" + searchStr); // call navigate on the instance 

    // Fetch code ..... 
});