2017-04-13 22 views
0

我想解決如何訪問我的requireJS JavaScript中的Intl-Tel-Input庫。我有以下代碼,並且我需要將回調放在requireJS模塊之外,因爲它正在被第三方代碼訪問。在JavaScript中訪問第三方加載的requireJS包

如何訪問callback函數中的intlTelInput代碼?

在我的樹枝模板:

<script type="text/javascript"> 
    require(['crmpicco/details'], function(details) { 
     details.init(); 
    }); 
    var callback = function (response) {    
     // I want to access intlTelInput in here  
    }; 
</script> 

我有這個在我的config.js

require = { 
    baseUrl: '/assets/js', 
    paths: { 
     'intl-tel-input': '/assets/vendor/intl-tel-input/build/js/intlTelInput.min', 
    }, 
    shim: { 
     'intl-tel-input': { 
      deps: ['libphonenumber-utils'] 
     }, 
    } 
}; 
+0

在他們的源代碼中他們支持UMD,所以我猜你可以使用'require(['intl-tel-input'],function(IntlTelInput){};'內部回調。並且不需要墊片。 – Andrey

+0

@Andrey你知道應該如何實施嗎?如果'callback'在'require'中,那麼第三方代碼就找不到回調函數。 – crmpicco

+0

@Andrey同樣,如果'require'在'callback'中,那麼intlTelInput就不能被找到。 'TypeError:intlTelInput不是函數'。 – crmpicco

回答

0

我的理解,你需要這樣的片段, 請看看

<head> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.3/require.min.js"></script> 
 
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/11.0.10/css/intlTelInput.css" /> 
 
    <script> 
 
    require.config({ 
 
     paths: { 
 
     'intl-tel-input': 'https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/11.0.10/js/intlTelInput', 
 
     'jquery': 'https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min' 
 
     } 
 
    }); 
 
    </script> 
 
</head> 
 
<body> 
 

 
    <input id="some-input" /> 
 
    <script> 
 
    require(['intl-tel-input'], function() { 
 
     function someCallback(){ 
 
     $('#some-input').intlTelInput(); 
 
     } 
 

 
     setTimeout(someCallback, 1000); 
 
    }); 
 
    </script> 
 
</body>

+0

感謝您的評論。這裏'setTimeout'的目的是什麼?你有看到我的評論嗎? – crmpicco

+0

@crmpicco,setTimeout僅僅是爲了證明你可以在異步回調中初始化intlTelInput – Andrey

+0

不幸的是,這不能在'intl-tel-input'的'require'中完成。查看Google無形reCaptcha演示中的源代碼,瞭解我正在嘗試實現的功能 - https://www.google.com/recaptcha/api2/demo?invisible=true。 – crmpicco