2015-01-05 2 views
0

맞춤 이벤트로 onset 이벤트를 발생시키는 방법에 스태킹 중입니다.div에서 onSet 함수가 실행되지 않습니다.

아래 코드에서 colorChange 이벤트가 제대로 발생하고 모든 바인딩 (stickit) 이벤트가 올바르게 작동하지만 onSet 이벤트가 발생합니다.

누군가가 잘못된 지점을 지적 할 수 있습니까?

bindings: { 
    '#color1': { 
    observe: 'color1', 
    update : function($el,val){ 
     $el.css("background-color",val); 
    }, 
    onSet : function(){ 
    //never get fired 
    }, 
    events : ["colorChange"] 
    } 
} 

events : { 
    "colorChange" : function(){ 
    //the event is occurring 
    } 
} 

//somewhere 

$("#color1").trigger("colorChange"); 

<!-- in the html --> 
<div id="color1"></div> 

답변

0

나는 그것을 만들 방법을 찾았지만 조금 해킹이된다.

stickway 2way 바인딩은 양식 요소와 @mavarazy와 같은 contenteditable="true"이있는 요소에서만 작동합니다.

stickit()를 호출하기 전에 <div contenteditable="true"></div>에 DIV를 설정하고

bindings: { 
    '#color1': { 
    observe: 'color1', 
    initialize : function($el){ 
     $el.removeAttr("contenteditable") 
    }, 
    update : function($el,val){ 
     $el.css("background-color",val); 
    }, 
    onSet : function(){ 
    //gets the event 
    }, 
    events : ["colorChange"] 
    } 
} 

는 초기화 후 들어 가지 않도록 실제 편집 가능한 요소를 속성을 삭제하고 2WAY 지금 바인딩으로 작동합니다.

1

Stickit 2 방법 입력 텍스트 영역, 입력 [TYPE = 체크 박스, 입력 [TYPE = 라디오]있는 형태 요소에 바인딩 사용을 선택; 그 밖의 모든 것에 대해 StickIt은 1 웨이 바인딩을 사용합니다.

양식 요소에 color1 ID를 지정해야합니다.

0

늦었지만 다른 사람들에게 도움이 될 수 있습니다. 더 쉬운 방법은 그냥 추가하는 것입니다. updateModel: true

bindings: { 
    '#color1': { 
    observe: 'color1', 
    update : function($el,val){ 
     $el.css("background-color",val); 
    }, 
    onSet : function(){ 
    //gets the event 
    }, 
    updateModel: true, 
    events : ["colorChange"] 
    } 
} 
관련 문제