Sailsjs
을 사용하여 SPA
프로젝트에서 작업했습니다. 문제는 다음과 같습니다.Sailsjs : 요청 매개 변수를 기반으로 응답 방법 설정
첫 번째 페이지가로드되면 컨트롤러에 res.view
또는 res.render
을 사용합니다. 그러나 후속 요청의 경우 res.view
또는 res.render
을 사용하고 싶지 않고 res.json
을 사용하고 싶습니다.
는 지금, 나는 방법을 사용
return req.param('json') ? res.json(myObj) : res.view('layout', myObj);
이 작동을하지만 난 여부 (req.param('json')
에 기초) 내 컨트롤러 자체가 알게 될 것입니다있는 더 일반적이고 추상적 인 방법을 찾고 있었다 나를 명시 적으로 말하지 않아도 res.view
또는 res.json
을 사용하십시오.
어떤 도움이 필요합니까?
답변 해 주셔서 감사합니다. res.ok [여기] (https://github.com/balderdashy/sails/blob/master/lib/hooks/responses/defaults/ok.js)에서 읽었습니다. 서버에서 첫 페이지를 렌더링하는 SPA 앱을 만들 때부터 모든 페이지가 첫 번째 페이지가 될 수 있으므로 항상 'layout.ejs'인수를 제공해야합니다. 또한 json 요청은 AJAX 또는 소켓을 통해 이루어집니다. 'req.wantsJSON'는 안정적으로 동작합니까? – myusuf
** views/layout.ejs ** 이외의 레이아웃 템플릿을 사용하지 않는 한 레이아웃을 지정하지 않아도됩니다. 'wantsJSON'에 관해서는 그렇습니다. 두 상황 모두에서 'true'를 리턴 할 것입니다. 당신은 그것을위한 코드를 확인할 수 있습니다. (여기) (https://github.com/balderdashy/sails/blob/f8870e796c22f5f9e39fb9d7c0047d73c82b157e/lib/hooks/request/qualifiers.js) – sgress454
내가 레이아웃을 제공하지 않으면 그것을 발견했다. , 기본적으로 ** views/layout.ejs **를 사용하지 않습니다. 오히려, 컨트롤러 폴더에서 동작의 이름으로 뷰를 가져옵니다. 그래서, UserController와 profile 액션에 있다면, 기본적으로 sails는 ** user/profile.ejs **를 렌더링합니다. – myusuf