让VueJS和jQuery玩得很好

这个问题与使用intl-tel-input和vuejs2有关/类似,这仍然没有答案。

而VueJS使用prop作为数据属性值有一个解决方案,但有点解释“环境”。

所以,长话短说,我动态设置一个新的引导选项卡(标题和URL),然后尝试使用jQuery (重新)绑定一些function。

在我的Vue方法中添加以下行https://github.com/thecodeassassin/bootstrap-remote-data/blob/master/js/bootstrap-remote-tabs.js#L258将应用该function,但仅当我触发改变两次。

与第一个(未答复的)问题相同的问题。

有人可以解释一下vueJSjQuery之间的工作vueJS吗? 以及如何解决问题,希望无需重写jQuery包。

如果我console.log我的变量似乎落后了一步。

LE:

我为相关提到的问题准备了一支笔: https : //codepen.io/AngelinCalu/pen/LWvwNq

让Vue与其他DOM操作工具包很好地配合的方法是完全隔离它们:如果你打算使用jQuery来操作DOM小部件,你也不要在它上面使用Vue(反之亦然)。

包装器组件充当桥,Vue可以与组件交互,组件可以使用jQuery(或其他)操纵其内部DOM元素。

生命周期钩子之外的jQuery选择器是一个糟糕的代码味道。 您的validatePhoneNumber使用选择器和DOM操作调用,但您使用Vue来处理keydown事件。 您需要使用jQuery处理此小部件上的所有内容。 不要使用Vue设置其类或phone_number或处理其事件。 这些都是DOM操作。 正如我所提到的,如果你将它包装在一个组件中,你可以将props传递给组件,你可以使用jQuery来设置class和phone_number。

我认为它背后的原因是当keydown事件被触发时 ,插件的内部工作启动并且不会立即暴露电话值。 这会导致竞争条件,您在插件本身内部更新之前过早地检索电话号码值。

通过监听其他事件(例如keyupinput可以简单地解决此问题:

 const app = new Vue({ el: '#app', data: { phone_number: "", validPhone: false }, methods: { validatePhoneNumber: function() { var phone_element = $('#phone'); var validPhoneNo = phone_element.intlTelInput("isValidNumber"); var phoneNo = phone_element.intlTelInput("getNumber"); console.log(phoneNo + ' -> ' + validPhoneNo); // I am interested in both values } }, mounted: function() { $('#phone').intlTelInput({ utilsScript: "js/utils.js", initialCountry: "auto", geoIpLookup: function(callback) { $.get('https://ipinfo.io', function() {}, "jsonp").always(function(resp) { var countryCode = (resp && resp.country) ? resp.country : ""; callback(countryCode); }); }, preferredCountries: [] }); } });