Spine = require('spine')
Welcome = require('controllers/welcome')
Signup = require('controllers/signup')
class Main extends Spine.Stack
controllers:
welcome: Welcome
signup: Signup
default: 'signup'
routes:
'/welcome': 'welcome'
'/signup': 'signup'
module.exports = Main
welcome
및 signup
컨트롤러 단지보기 렌더링 컨트롤러에 활성 클래스를 추가하지 않습니다 stack docs 당 다음SpineJS 스택
Spine = require('spine')
class Welcome extends Spine.Controller
className: 'welcome'
constructor: ->
super
@active @render
render: ->
console.log 'welcome render function'
@html require('views/welcome')()
module.exports = Welcome
와, 나는 이것을에 추가 내 CSS는 :
.stack > *:not(.active) {
display: none
}
나는 의도적으로 어떻게 제어 방식이 것 대신 뷰를 렌더링 @navigate('/welcome')
보고 할 가입 컨트롤러가 스택. welcome의 render 함수의 console.log
문이 호출되지만 welcome의 <div>
에는 active
클래스가 추가되지 않았고 위의 CSS 때문에 표시되지 않습니다.
몇 번이나 문서를 다시 읽었으며 인터넷 검색 기능을 사용하지 못했습니다. 왜 환영 클래스에 적극적으로 참여하는 클래스가 추가되지 않습니까?
이 질문을 내 컨트롤러 중 하나의 생성자에 한정하여 함수를'active' 이벤트에 바인딩하고 그 바인딩 함수가 실제로 호출되면 스택이 기본 컨트롤러를 활성화하기 전에 발생합니다. – Miles
내가 뭘 하려는지 더 좋은 방법을 깨달았다 - 내 스택의 생성자를 겹쳐 썼다. 생성자 : -> super if @verify_user() then @navigate ('/ welcome') else @ navigate ('signup') – Miles