uni-app中 u-view的u--input组件password属性动态绑定在app端失效

uni-app中 u-view的u–input组件password属性动态绑定在app端失效

开发环境 版本号 项目创建方式
Windows Windows 10 1909 HBuilderX

示例代码:

<template>  
    <view class="login-root-view">  
        <view class="content">  
            <view class="contentInput">  
                <text class="contentInputText">密码</text>  
                <!-- 注意:由于兼容性差异,使用前后插槽,nvue下需使用u--input,非nvue下需使用u-input -->  
                <!-- #ifndef APP-NVUE -->  
                <u-input placeholder="请输入密码" border="bottom" clearable :password='isPassword' v-model="password">  
                    <!-- #endif -->  
                    <!-- #ifdef APP-NVUE -->  
                    <u--input placeholder="请输入密码" border="bottom" clearable :password='isPassword'  v-model="password">  
                        <!-- #endif -->  
                        <template slot="suffix">  
                            <u-icon name="eye" size="40" v-if='isPassword' @click='isPassword=!isPassword'></u-icon>  
                            <u-icon name="eye-fill" size="40" v-if='!isPassword' @click='isPassword=!isPassword'>  
                            </u-icon>  
                        </template>  
                        <!-- #ifndef APP-NVUE -->  
                </u-input>  
                <!-- #endif -->  
                <!-- #ifdef APP-NVUE -->  
                </u--input>  
                <!-- #endif -->  
            </view>  
            <u-button text="登录" type="primary" class="contentLoginBtn" shape='circle'></u-button>  
        </view>  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  
                isPassword: true, //密码是否显示  
                password: "" //密码  
            };  
        },    
        mounted() {},  
        methods: {  
        }  
    };  
</script>  


### 操作步骤:


```html
<!-- #ifndef APP-NVUE -->  
<u-input placeholder="请输入密码" border="bottom" clearable :password='isPassword' v-model="password">  
    <!-- #endif -->  
    <!-- #ifdef APP-NVUE -->  
    <u--input placeholder="请输入密码" border="bottom" clearable :password='isPassword' v-model="password">  
        <!-- #endif -->  
        <template slot="suffix">  
            <u-icon name="eye" size="40" v-if='isPassword' @click='isPassword=!isPassword'></u-icon>  
            <u-icon name="eye-fill" size="40" v-if='!isPassword' @click='isPassword=!isPassword'>  
            </u-icon>  
        </template>  
        <!-- #ifndef APP-NVUE -->  
</u-input>  

预期结果:

预期结果: app-NUE中输入框中的密码,随着password这个属性的true /flase进行显示



### 实际结果:


①输入框中的密码,一直是第一次赋值的true状态,随后进行更改false不生效
②若第一次将password赋值为false,再进行修改为true,第一次false生效,第二次修改为true生效,第三次修改为false不生效

bug描述:

【报Bug】u-view中 u–input 的password动态绑定在APP-NVUE端失效,在H5端是正常的

使用的是雷电 安卓模拟器

现有的需求,登录页面-密码输入框-点击眼睛展示密码-再点击则不展示密码,展现的是密码状态,H5端正常,nvue打包在安卓模拟器上的失效

绑定值 永远是false的状态 是可以展示的,但是以动态绑定值就会没有效果

8 回复

我这边暂时的解决方案和你的有点类似: ①解决动态切换问题 uview 的u-input组件源码 做出了如下修改

②光标移动到index为0问题 在使用到input的页面去操作dom(只是暂时的解决方案,希望官方可以赶紧解决这个bug)


首先 vue页面请用u-别用u-- 其次 你发一个可复现的demo出来看下

你好,之前没有用markdown语法导致没发全代码,您再看一下,上面就是我的代码,vue和nvue是有用条件编译进行的

示例代码就是可复现的demo

好的,你这个代码我试下

我最近也遇到这个问题,看了看uview 的u-input组件源码,在u-input文件里把图中灰色部分拿掉,后果是否有BUG产生未测,暂时可以解决无法动态切换的问题。但是切换过程中软键盘会来回跳动,并且切换之后光标会自动跳到文本下标为0的地方,这得好好再研究研究。话说回来在NVUE文件当中,Input光标由于原生是绿色的,没办法修改光标的颜色,可能是本人研究的浅,有哪位大佬给个提示提示一下。万分感谢!

感谢,解决了这个bug

uni-app 中使用 u-viewu--input 组件时,如果 password 属性动态绑定在 App 端失效,可能是由于以下几个原因导致的:

1. 动态绑定的语法问题

确保你正确使用了动态绑定的语法。password 属性应该使用 v-bind: 进行动态绑定。

<u--input v-model="inputValue" :password="isPassword" />

2. 数据响应性问题

确保 isPassword 是一个响应式的数据。如果 isPassword 不是响应式的,动态绑定可能不会生效。

export default {
  data() {
    return {
      inputValue: '',
      isPassword: true // 确保这是一个响应式数据
    };
  }
};

3. 组件版本问题

确保你使用的 u-view 版本是最新的,或者至少是支持 password 动态绑定的版本。旧版本可能存在一些 bug 或未实现的功能。

4. App 端兼容性问题

某些情况下,App 端可能存在兼容性问题。你可以尝试以下方法:

  • 检查控制台日志:查看是否有任何错误或警告信息。
  • 使用原生组件:如果 u--input 在 App 端存在问题,可以尝试使用 uni-app 的原生 input 组件,并手动实现密码输入功能。
<input type="password" v-model="inputValue" v-if="isPassword" />
<input type="text" v-model="inputValue" v-else />

5. 更新 u-view 组件

如果问题依然存在,建议更新 u-view 到最新版本,或者查看官方文档和社区是否有相关的解决方案。

6. 使用 v-if 替代动态绑定

如果动态绑定仍然无效,可以尝试使用 v-if 来切换不同的输入框。

<u--input v-model="inputValue" password v-if="isPassword" />
<u--input v-model="inputValue" v-else />
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!