Comment obtenir le nœud dom dans uniapp
Méthode d'Uniapp pour obtenir des nœuds dom : 1. Obtenez le premier nœud correspondant au sélecteur via la méthode "let dom=query.select(selector)" ; 2. Utilisez "letdoms=query.selectAll(selector)" ; " méthode pour obtenir tous les nœuds.
L'environnement d'exploitation de ce tutoriel : système Windows7, version uni-app2.5.1, ordinateur thinkpad t480.
Recommandé (gratuit) : Tutoriel de développement d'uni-app
uni-app obtient le nœud DOM
[Référence site officiel : https://uniapp.dcloud.io/api/ui/nodes-info?id=selectorqueryexec]
1 Comment obtenir l'instance de l'objet SelectorQuery :
let query=uni.createSelectorQuery();
Fonction : Renvoie un Instance d'objet SelectorQuery, cette instance est utilisée pour interroger les informations des nœuds DOM.
Remarques :
(1) Cette méthode doit être appelée une fois le cycle de vie monté.
(2) La technologie nvue ne prend pas en charge cette méthode.
2. Comment obtenir le nœud DOM :
1. Obtenez le premier nœud qui correspond au sélecteur :
let dom=query.select(selector)
2.
letdoms=query.selectAll(selector)
Les deux méthodes ci-dessus renvoient une instance d'objet NodesRef, qui est utilisée pour obtenir des informations sur le nœud DOM.
3. Comment obtenir les informations des nœuds DOM : (prenez les doms comme exemple)
1 Obtenez les informations de position de disposition des nœuds DOM :
doms.boundingClienRect(function(res){ //res:{left,top,right,bottom,width,height} }).exec(function(){ //上述布局位置信息获取成功后执行的回调函数 })
2. Obtenez les informations de position de disposition des nœuds DOM Faites défiler les informations de position :
doms.scrollOffset(function(){ //res:{scrollLeft,scrollTop} }).exec(function(){ //上述滚动位置信息获取成功后执行的回调函数 })
3. Obtenez toutes les informations sur les nœuds DOM :
doms.fields({ rect:true, //是否返回节点布局位置信息{left,top,right,bottom} size:true, //是否返回节点尺寸信息{width,height} scrollOffset:true //是否返回节点滚动信息{scrollLeft,scrollTop} },function(res){ //res 可以返回第一个参数对象中指定为true的相关信息 }).exec(function(){ //上述节点信息获取成功后执行的回调函数 })
4 Exemples de code
1. Il existe plusieurs dans Pour les nœuds dont le nom de classe est leftItem, comment obtenir la distance depuis le haut de ces nœuds et attribuer ces distances à un tableau nommé leftItemTop qui a été défini dans la zone de données.
uni.createSelectorQuery().selectAll(".leftItem").boundingClienRect(res=>{ this.leftItemTop=res.map(item=>item.top) }).exec(()=>{ console.log(this.leftItemTop) })
2. Exemple 2 : Il existe plusieurs nœuds nommés rightItem dans
uni.createSelectorQuery().selectAll(".rightItem").fields({ size:true },res=>{ this.rightItemHeight=res.map(item=>{item.height}) }).exec(()=>{ console.log(this.rightItemHeight) })
5. Problèmes asynchrones causés par le rendu des données DOM :
[Référence site officiel : https://cn.vuejs.org/v2/api/#vm-nextTick]
[Lecture recommandée : https://segmentfault.com/a/1190000012861862]
**Problème :**La variable temp dans une certaine zone de données affecte le rendu de la structure DOM, et c'est spécifié qu'après la mise à jour de la variable, une autre opération doit être effectuée jusqu'à ce que la structure DOM soit restituée. Comment ces autres opérations peuvent-elles garantir que ces autres opérations ne se produisent qu'après le nouveau rendu de la structure DOM ?
Solution : Ces opérations qui nécessitent un nouveau rendu de la structure DOM doivent être écrites dans la fonction de rappel au format this&nextTick(function(){}).
<block v-for="(item,index) in domData"> <view class="domItem">{{item.title}}</view> </block>
Disons simplement que la structure ci-dessus est une structure pilotée par les données domData. La variable domData doit d'abord obtenir les données nécessaires de l'interface, puis les restituer dans la structure DOM.
data(){ return{ domData:[], //用于储存从接口中获取的DOM数据 domItemWidth:[] //用于储存获取的DOM结构的宽度 } }
Lorsque la variable domData récupère les données de l'interface, elle doit également s'assurer que la structure DOM est restituée avec succès avant que la largeur de ces structures puisse être obtenue. Par conséquent, les opérations ultérieures doivent utiliser la fonction this.nextTick(. (){ }), qui est écrit dans la fonction de rappel de this.nextTick(function(){}).
Le code de l'exemple ci-dessus est le suivant :
uni.request({ url:"http://localhost:8080/......", data:{.....}, success:res=>{ this.domData=res.data; this.nextTick(()=>{//该格式保证了domData已经得到接口数据并成功渲染DOM结构 uni.createSelectorQuery().selectAll(".domItem").fields({ size:true },res=>{ this.domItemWidth=res.map(item=>item.width) }).exec(()=>{ console.log(this.domItemWidth) }) }) } })
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Étapes pour lancer l'aperçu du projet UniApp dans WebStorm : Installer le plugin UniApp Development Tools Se connecter aux paramètres de l'appareil Aperçu du lancement de WebSocket

De manière générale, uni-app est préférable lorsque des fonctions natives complexes sont nécessaires ; MUI est meilleur lorsque des interfaces simples ou hautement personnalisées sont nécessaires. De plus, uni-app possède : 1. Prise en charge de Vue.js/JavaScript ; 2. Composants/API natifs riches 3. Bon écosystème ; Les inconvénients sont : 1. Problèmes de performances ; 2. Difficulté à personnaliser l'interface ; MUI a : 1. Prise en charge de la conception matérielle ; 2. Grande flexibilité ; 3. Bibliothèque étendue de composants/thèmes. Les inconvénients sont : 1. Dépendance CSS ; 2. Ne fournit pas de composants natifs ; 3. Petit écosystème ;

UniApp utilise HBuilder

UniApp présente de nombreux avantages en tant que cadre de développement multiplateforme, mais ses inconvénients sont également évidents : les performances sont limitées par le mode de développement hybride, ce qui entraîne une vitesse d'ouverture, un rendu des pages et une réponse interactive médiocres. L'écosystème est imparfait et il existe peu de composants et de bibliothèques dans des domaines spécifiques, ce qui limite la créativité et la réalisation de fonctions complexes. Les problèmes de compatibilité sur différentes plates-formes sont sujets à des différences de style et à une prise en charge incohérente des API. Le mécanisme de sécurité de WebView est différent de celui des applications natives, ce qui peut réduire la sécurité des applications. Les versions et mises à jour d'applications prenant en charge plusieurs plates-formes en même temps nécessitent plusieurs compilations et packages, ce qui augmente les coûts de développement et de maintenance.

Le développement d'Uniapp nécessite les bases suivantes : technologie front-end (HTML, CSS, JavaScript) connaissance du développement mobile (plateformes iOS et Android) autres bases de Node.js (outils de contrôle de version, IDE, simulateur de développement mobile ou expérience réelle du débogage machine)

UniApp est basé sur Vue.js et Flutter est basé sur Dart. Les deux prennent en charge le développement multiplateforme. UniApp fournit des composants riches et un développement facile, mais ses performances sont limitées par WebView ; Flutter utilise un moteur de rendu natif, qui offre d'excellentes performances mais est plus difficile à développer. UniApp possède une communauté chinoise active et Flutter possède une communauté vaste et mondiale. UniApp convient aux scénarios avec un développement rapide et de faibles exigences de performances ; Flutter convient aux applications complexes avec une personnalisation élevée et des performances élevées.

Lorsque vous choisissez entre UniApp et le développement natif, vous devez prendre en compte le coût de développement, les performances, l'expérience utilisateur et la flexibilité. Les avantages d'UniApp sont le développement multiplateforme, l'itération rapide, l'apprentissage facile et les plug-ins intégrés, tandis que le développement natif est supérieur en termes de performances, de stabilité, d'expérience native et d'évolutivité. Pesez le pour et le contre en fonction des besoins spécifiques du projet. UniApp convient aux débutants, et le développement natif convient aux applications complexes qui recherchent des performances élevées et une expérience transparente.

Bibliothèque de composants recommandée pour Uniapp afin de développer de petits programmes : uni-ui : officiellement produite par Uniapp, elle fournit des composants de base et métier. vant-weapp : produit par Bytedance, avec une conception d'interface utilisateur simple et esthétique. taro-ui : produit par JD.com et développé sur la base du framework Taro. fish-design : produit par Baidu, en utilisant le style de conception Material Design. naive-ui : produit par Youzan, conception d'interface utilisateur moderne, légère et facile à personnaliser.
