knockoutjs-로드시 트리거되는 매개 변수가있는 바인딩
최근에 많은 knockoutjs를하고 있는데 이상한 일이 발생했습니다.
이 바이올린 http://jsfiddle.net/hqXjv/ 에서 볼 수 있듯이 바인딩을 설정할 click: testMethod
때 버튼을 클릭하면 작업이 실행됩니다.
이 바이올린에서 볼 수 있듯이 http://jsfiddle.net/kxTzM/click: testMethod('hi')
액션에 대한 바인딩을 설정할 때 버튼을 클릭 할 때와 페이지로드시 모두 실행됩니다 (applyBindings에서 추측하고 있습니다)
문제를 재현하는 데 매개 변수가 필요하지 않습니다 click: testMethod()
. 첫 번째 바이올린에서 바인딩을 로 변경하면 페이지로드시 트리거되는 것을 볼 수 있습니다.
예, 요소에 다른 속성을 추가하고 매개 변수로 사용하려고 시도 할 수 있지만 내 질문은 매개 변수를 onload를 트리거하지 않고 knockoutjs 바인딩에 전달하는 방법이 있다는 것입니다. 이것이 버그라면 그럴 수도 있지만 나는 그것을 피하는 방법을 알고 싶습니다.
이 녹아웃 페이지의 "참고 2"가 모든 것을 설명한다고 생각합니다.
http://knockoutjs.com/documentation/click-binding.html
다음 중 하나를 사용하여 문제를 피할 수 있습니다.
익명 기능 :
<button data-bind="click: function(data, event) { myFunction(data, event, 'param1', 'param2') }">Click me</button>
... 또는 ...
바인드 방법 :
<button data-bind="click: myFunction.bind($data, 'param1', 'param2')">Click me</button>
다음은로드시 클릭 기능을 실행했습니다.
click: clickSpan()
아래와 같이 대괄호 를 제거하면 함수가로드시 실행되지 않았습니다.
click: clickSpan
(이것은 위의 주 2에 설명되어 있지만 암호 형식이었습니다 :-)
나는 다음과 같은 상황에서 이것을 만났습니다.
- Visual Studio 2013을 실행하고있었습니다.
- 내 녹아웃 프로젝트는 TypeScript 1.5를 사용하고있었습니다.
- Visual Studio 디버거를 사용하여 크롬에서 프로젝트를 실행하고있었습니다.
- 일부 코드를 제대로 리팩터링하지 않았고 디버거를 다시 컴파일하거나 다시 실행하는 것을 무시했습니다.
이 때문에 나는 컴파일되지 않는 잘못된 TypeScript가 있었으며 그 효과에 대한 경고 나 오류가 발생하지 않았고 TypeScript에 대한 편집 내용이 자동으로 제대로 반영되지 않았다고 생각합니다. 생성 된 JavaScript 파일.
다른 사람들이 이것을 보는 것은 드문 일일 수 있지만, VS 디버거를 실행하는 동안 TypeScript를 제자리에서 편집하는 경우이 문제 또는 기타 예기치 않은 동작이 발생할 수 있다는 경고가 있습니다. Mark Robinson이 자동 생성 된 js 파일에서 설명한 상황을 만들었을 것 같지만 TypeScript에서는 보지 못했습니다.
참고 URL : https://stackoverflow.com/questions/9891282/knockoutjs-bindings-with-parameters-triggered-on-load
'program tip' 카테고리의 다른 글
인터페이스, 다중 상속 vs 인터페이스, 인터페이스의 이점을 사용하는 이유는 무엇입니까? (0) | 2020.11.25 |
---|---|
예외 Junit 4.10 후 Mockito 확인 (0) | 2020.11.25 |
C # 메서드가 사용하도록 정의 할 수있는 최대 매개 변수 수는 얼마입니까? (0) | 2020.11.24 |
WebStorm에서 Wordwrap을 설정할 수 있습니까? (0) | 2020.11.24 |
Swift에서 'fileprivate'키워드는 무엇을 의미합니까? (0) | 2020.11.24 |