首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >传递“顶级”布尔值的vue js不能工作,只能嵌套。

传递“顶级”布尔值的vue js不能工作,只能嵌套。
EN

Stack Overflow用户
提问于 2017-07-17 20:29:22
回答 1查看 1.3K关注 0票数 3

这太奇怪了。当我在顶层定义布尔属性showModal时,它只是被vue.js忽略了。以下是我正在做的事情:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//Component:
export default {
  props:['rating', 'showModal'],
  data: function data () {
    return {
      rating: this.rating,
      showModal: this.showModal
    };
  }
};

引用该视图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const sharedRating = {
  title: '',
  remark: ''
};

let showModal = false;

new Vue({
  el: '#rating-edit-container',
  data: {
    showModal: showModal,
    rating: sharedRating
  }
});

showModal = true;

然后将两个值传递给组件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <rating-edit
    :rating="rating"
    :show-modal="showModal"></rating-edit>

但是,当我更改showModal的值时,什么都不会发生。

如果我在评级对象内传递showModal并使用该嵌套属性,那么所有操作都很好:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const sharedRating = {
  showModal: false,
  title: '',
  remark: ''
};

new Vue({
  el: '#rating-edit-container',
  data: {
    rating: sharedRating
  }
});

sharedRating.showModal = true;

“独立”的布尔属性不也应该在Vue中工作吗?还是它们总是需要“包装”?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-17 20:52:37

首先,我不知道组件中发生了什么,因为您要用相同的名称命名属性和数据值。如果不进行测试,我不确定哪一项获胜,但看起来这是数据属性。不应将属性和数据值命名为相同的内容。该财产将永远对您可用。

在组件中定义数据函数时,还必须记住,只有在创建组件时才调用数据函数。你设置的地方

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
showModal: this.showModal

(刚才我说过这不是个好主意) showModal数据属性只设置一次。除非在组件中更新它,否则永远不会更新它。它将不会接收对属性showModal的更改。

如果您希望组件从外部获得对showModal的更新,对于组件中对showModal的更改在组件外部重新生成,则需要对此进行稍微不同的处理。

Vue组件由支撑住,事件上升结构组成。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export default {
  props:['rating', 'showModal'],
  data: function data () {
    return {
      rating: this.rating,
    };
  }, 
  computed:{
    show:{
      get(){ return this.showModal; }
      set(v){ this.$emit('input', v) }
    }
  }
};

然后修改模板中使用它的方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rating-edit
  :rating="rating"
  v-model="showModal"></rating-edit>

以这种方式编写组件时,组件外部对showModal的任何更新都将以show的形式反映在组件中,而组件中对show的任何更改都将发送给父组件。然后,由于v-model侦听input事件,父级中的showModal将被更新为新值。

现在您可能会问,当showModal是一个对象的属性时,它为什么会工作呢?

当您将对象从顶层传递到组件时,在Vue之外,您的根Vue和您的组件都在处理同一个对象。任何这些地方对showModal属性的任何更改都将反映在所有这些位置中。但是,如果要通过创建一个新的showModal对象来更新sharedRating,您将看到类似于使用布尔值时所看到的行为。Vue中的属性是不可变的,这意味着您对原始javascript值(字符串、数字、布尔值等)所做的任何更改都不会反映在组件之外,实际上,如果您使用开发版本,Vue将抛出有关这样做的警告。然而,javascript中的对象和数组是通过引用传递的。引用是不可变的,但对象的属性和数组的内容可以更改。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45157526

复制
相关文章
在Linux系统中安装LAMP出现的错误总结
总结一下用源代码安装LAMP环境中遇到常见的错误,从错误3开始是因为安装php后面带参数,导到没有找到开发包例如:./configure --with-gd  --with-libjpeg会出现如下错误。
星哥玩云
2022/06/28
3.2K0
在Linux系统中安装LAMP出现的错误总结
在HTML页面中引入公共的部分的代码
在做前端网页的时候,会涉及到很多界面,有的时候,这些界面都会有重复的代码,比如侧边栏菜单的重复代码,头部导航的 重复代码,底部的重复代码,这个时候,为了使每个页面的代码看起来简洁明了,我们需要把这些重复的代码放到公共的页面里面,在具体页面只需引用即可。
王小婷
2019/05/17
5.3K0
FFmpeg代码导读——HEVC在RTMP中的扩展
为推进HEVC视频编码格式在直播方案中的落地,经过CDN联盟讨论,并和主流云服务厂商达成一致,规范了HEVC在RTMP/FLV中的扩展,具体修改内容见下。
LiveVideoStack
2021/09/02
1.7K0
FFmpeg代码导读——HEVC在RTMP中的扩展
4个代码中,出现频率最高的字符串
在程序员的代码里,字符串是经常出现的形式。有些语句虽然没有什么意义,但却无孔不入,我们经常见到它的身影。
xjjdog
2020/05/29
7170
在 Karma 中测试覆盖率
最近自己用vue造轮子开发UI框架 https://zyqq.github.io/wheel/,为了使代码更健壮,采用了Karma做单元测试,并尝试测试覆盖率以检测测试质量。以下是测试覆盖率过程。
EchoROne
2022/08/15
1.1K0
在 Karma 中测试覆盖率
IDEA中调试Topology出现的错误
在IDEA的maven项目中编写Topology出错: NoClassFound找不到主类:解决– 在pom.xml中,找到中的storm,添加<>compi<>
ZONGLYN
2019/08/08
1.4K0
算法-删除字符串中的公共字符
该文讲述了如何删除字符串中的公共字符,通过创建一个hash表来存储字符串中每个字符的出现次数,然后遍历字符串,将不需要删除的字符保留,需要删除的字符则用另一个数组存储,最后将修改后的字符串全部替换回来。这种方法的时间复杂度为O(n),空间复杂度为O(256)
chaibubble
2018/01/02
3.6K0
算法-删除字符串中的公共字符
angular2中在使用路由懒加载时候出现的错误
ERROR in Cannot use 'in' operator to search for 'providers' in null 出现这个问题的原因是,在使用懒加载的时候,没有指定module,没有找到相关的提供信息。 const routes: Routes = [ {path:'login',component:loginComponent}, { path: 'about', loadChildren: './home/home/home.module'},] 以上是修改之前报错的代码:
杭州前端工程师
2018/06/15
5.1K0
在Kubernetes集群中扩展CoreDNS
我正在分享在Kubernetes(1.12)中使用CoreDNS(1.2.5)运行的一些测试结果,以便为将CoreDNS调整到您的集群提供一些参考点。除了在默认配置中测试CoreDNS之外,我还测试了CoreDNS并启用了可选的autopath插件。autopath插件是一种优化,有助于透明地缓解由于Kubernetes臭名昭着的ndots:5问题而导致的Pod性能损失。这些测试在启用autopath时量化了内存/性能交易。
CNCF
2019/12/05
2.2K0
在Kubernetes集群中扩展CoreDNS
[译] 在 vue-test-utils 中 mock 全局对象
原文:https://itnext.io/mocking-global-objects-in-vue-test-utils-a8822df013a8
江米小枣
2020/06/15
1.6K0
VS2013中Python学习笔记[基础入门]
        在上一节中简单的介绍了在VS2013中如何进行开发Hello World,在VS2013中进行搭建了环境。本节主要来简单的学习一下关于Python的基础。
aehyok
2018/08/31
5230
VS2013中Python学习笔记[基础入门]
字符串中字符出现重复字符
下面是总结的一些常见问题,以供大家参考 第一次出现重复字符 出现的重复字符 出现字符串、字符还有次数 出现次数最多的字符及次数 class Eclass{ public static void main(String[] args) { String str = "eeeejwurihewweafa"; Eclass e = new Eclass(); //问题一 int index = e.Method(str); S
崔笑颜
2020/06/08
1.7K0
windows系统下VS2013或者VS2017的C4996错误解决方法
由于微软在VS2013中不建议再使用c的传统库函数scanf,strcpy,sprintf等,所以直接使用这些库函数会提示C4996错误,在源文件中添加以下指令就可以避免这个错误提示: 法一: #define _CRT_SECURE_NO_WARNINGS 把这个宏定义一定要放到.c文件的第一行。 法二: 在主函数任意一行加上如下代码: #pragma warning(disable:4996) 如下图所示:
黑泽君
2018/10/11
7890
VS2013中Python学习笔记[环境搭建]
Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
aehyok
2018/08/31
7180
VS2013中Python学习笔记[环境搭建]
工作负载不要全部放在公共云的篮子中
有些东西并不属于公共场合,与此类似,公共云可能不总是适合所有工作负载。 这个声明从来没有像最近两次非常公开的云中断那样更加相关。亚马逊和微软公司对此都必须迅速采取行动,安抚那些无法连接到存储在其AWS
静一
2018/03/27
9860
工作负载不要全部放在公共云的篮子中
VS2013中Python学习笔记[环境搭建]
Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
aehyok
2019/02/25
5930
讨论覆盖函数中偏函数扩展的复杂性
摘要:覆盖函数是子模块函数的重要子类,可用于机器学习,博弈论,社交网络和设施位置。我们研究了覆盖函数的偏函数扩展的复杂性。也就是说,给定由[m]的子集族和每个点的值组成的部分函数,​​是否存在在[m]的所有子集上定义的扩展该偏函数的覆盖函数?偏函数扩展以前是针对其他函数类进行研究的,包括布尔函数和凸函数,并且在许多领域都很有用,例如在学习这些函数类时获得边界。
罗大琦
2019/07/18
8080
错误票据test
本文最后更新于 1163 天前,其中的信息可能已经有所发展或是发生改变。 #include<iostream> #include<cstring> #include<algorithm> #include<vector> #include<cmath> using namespace std; int main(){ int n; vector<string> vec; vector<string> vecarr; cin>>n; cin.ignore(); for(int i=0;i<n;i
Yuyy
2022/06/28
1360
在input中回车后页面提交导致出现HTTP 错误 405.0 - Method Not Allowed
前些时间在做一个搜索功能时发现一个比较有意思的现象,场景是这样的:在一个模态窗口中是一个订单列表,页面的顶部有若干个状态筛选框和一个搜索关键字输入框,当焦点在关键字输入框时按回车,本来是对input的keyup事件做了监听,当发现是按了回车键时便自动提交搜索请求的,但输入关键字后按回车时页面竟然跳转了,并且出现“HTTP 错误 405.0 - Method Not Allowed无法显示您正在查找的页面,因为使用了无效方法(HTTP 谓词)”的错误,非常纳闷。
风柏杨4711
2021/03/15
1.9K0
点击加载更多

相似问题

Django DRP post方法如何传递参数

23

使用POST方法的Django问题

42

AJAX传递POST请求,Django问题

24

hyperledger composer post方法:如何在post方法中传递参数

10

如何传递参数删除方法?(django)

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文