나는 내 플러그인에 jQuery.Widget Factory을 사용하는 이점에 대해 많이 읽었습니다. 하나의 위장 된 기능 중 하나는 jQuery.widget이 위젯의 이름표를 만드는 방법입니다. jQuery 컨텍스트 내에서 (자연스럽게) 현재 네임 스페이스를 유지할 수 있기 때문에 이것은 매력적이다.왜 내 jQuery.Widgets 네임 스페이스에 액세스 할 수 없습니까?
인한 문제 :
나는 "$ (". myWidget을 ")가 계속 오류. namespace.newWay는 함수가 아닙니다." 다음과 같은 요소에 대해
...
<div class="myWidget"></div>
THIS EXAMPLES 코드가 작동합니다
좋은 동안 ... 이것이 내가 아직도 원하는대로 ... 달성하기 위해 노력하고 NOT 것입니다 내 존경받는 네임 스페이스.
var workingVersion = {
_init: function() { /* Do Something*/ }
};
$.widget("ui.workingVersion", workingVersion);
$(document).ready(function() {
$('.myWidget').workingVersion();
});
는하지만, 내 코드는 실패
var namespace = namespace || { };
;namespace.newWay = (function ($, window, document, undefined) {
return function (options) {
var self = this;
this._create = function() {
// Do something
},
this._init = function() {
// Do something
},
this.publicFunction = function() {
// Do something
};
};
})(jQuery, window, document);
$(document).ready(function() {
$.widget("ui.namespace.newWay", namespace.newWay); //<-- Namespace does get appended
$('.myWidget').namespace.newWay({ type: 'testing' }); //<-- But still fails here
});
내 질문은 :
은 왜 실패 하는가?
관련 독서 :
그리고 당신의 questio을 대신 이런 식으로 호출 n은 "왜 실패할까요?"입니다. 그 질문에 답하기 위해, 나는 왜 당신이 다른 접근 방식을 취하기로 결심했는지 그리고이 새로운 접근법으로부터 얻으려는 것을 이해해야합니다. – Neil
'$ ('. myWidget'). newWay();'어떻게 호출 할 수 있습니다. '$()'인스턴스에서 네임 스페이스를 사용할 필요가 없습니다. – zzzzBov
답해 주셔서 감사합니다 : (a) 네임 스페이스를 사용하는 것이 목표입니다! (b) 네임 스페이스에 액세스 할 수없는 경우 네임 스페이스를 추가하는 이유는 무엇입니까? (c) 샘플 기사는 그것이 가능함을 암시한다. –