vue中动态加载组件+开发者模式+JS参数值传递和引用传递
今天写vue里面通过接口反参动态加载组件时候 跟着同学。。。学习到了
一、先说说vue 内置组件 component 的用法
component组件可以来专门用来进行组件的切换,使用is来绑定你的组件名,本次系统写的比较简单。。。
此处::is='组件名'可以直接条用组件。
因为全页面有十个组件加载,所以用到了循环、数组。就遇到了在方法里可以打印数组里的值,但绑定组件名的地方获取不到的问题。
后来加上了一个数组b,并把b数组的值赋值给a。a就可以获取到了。就是实现了动态加载组件。
二、观察者模式
我需要遍历的数组值更新了,值也赋值了,为什么视图不更新?这个问题网上也有很多解释。
数组之所以获取不到是因为绑定中的观察者模式没有检测到b数组的改变,补习了一下观察者模式。https://blog.csdn.net/xidongdong1/article/details/78613654
意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。
何时使用:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。
如何解决:使用面向对象技术,可以将这种依赖关系弱化。
关键代码:在抽象类里有一个 ArrayList 存放观察者们。
在vue中model被定义为观察者,而view里面进行一处或多处依赖数据绑定即为观察者。https://www.cnblogs.com/pi-xia/articles/9351432.html中还列举了一些被观察者对观察者的控制方法。
当a赋值为b后才被观察者模式检测到,由此也补习了点JS参数值传递和引用传递的知识
三、JS参数值传递和引用传递
字符串、数字、布尔、数组、对象、Null、Undefined
由于js
中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字.
typeof 123 //Number //NaN/isNaN
typeof 'abc' //String
typeof true //Boolean //true/false
typeof undefined //Undefined
typeof null //Object //被当一个空对象引用了
typeof { } //Object
typeof [ ] //Object
typeof console.log() //Function
三大引用类型:object /Array/Function (按存储类型)
值类型,复制值
引用类型,复制值,但其实是地址,实际上是指针。两个变量都保存了同一个对象地址,则这两个变量指向了同一个对象。因此,改变其中任何一个变量,都会相互影响
可以这样理解 数组里的值改变之后,观察者监听的是a的值,其实是地址,但地址值并没有改变。所以监听不到。而a[]=b[]后,地址值改变就监听到了。
下面的代码:
var a=[1,2,3]
function aaa(b){
b.push(4)
}
aaa(a)
alert(a)// [1,2,3,4]
这里b、a所指地址一样,所以b加了值4,a中的值也改变了。
此外,值类型赋值应该是存储的就是a1=3,这样的值。
这是我目前的理解,这都是以前看过的东西,没有深刻理解,就忘记了。基础的东西不应该忘呀!
有问题的地方欢迎指正。。。谢谢
vue中动态加载组件+开发者模式+JS参数值传递和引用传递的更多相关文章
- vue中动态加载img
想实现动态加载图片,当点击“首页”时,图片变色 代码如下: <mt-tabbar v-model="selected" fixed class="border-1p ...
- vue中动态加载图片路径的方法
assets:在项目编译的过程中会被webpack处理解析为模块依赖,只支持相对路径的形式,如< img src=”./logo.png”>和background:url(./logo.p ...
- Vue加载组件、动态加载组件的几种方式
https://cn.vuejs.org/v2/guide/components.html https://cn.vuejs.org/v2/guide/components-dynamic-async ...
- C# 动态加载组件后怎么在开发环境中调试
动态加载组件 那就是简单的Assembly.Load动态加载dll而以.这网上资料也有不少.基本的思路基本上就是在本地上一个指定目录如[plugs]存在着一堆dll文件.主程序在初始运行时一般会把指定 ...
- vue动态加载组件
vue动态加载组件,可以使用以下方式 <component :is="propertyname" v-for="tab in tabs"></ ...
- VUE 动态加载组件的四种方式
动态加载组件的四种方式: 1.使用import导入组件,可以获取到组件 var name = 'system'; var myComponent =() => import('../compon ...
- Vue 动态加载组件
为什么要动态加载呢?而不是一次性加载呢? 一次性?你能保证你拿的内容不多,那从性能方面说还是OK的.否则,就该什么时候用,就什么时候取. 得出这想法,源于前几天上班赶产品的故事: A组件是父亲,B组件 ...
- React router动态加载组件-适配器模式的应用
前言 本文讲述怎么实现动态加载组件,并借此阐述适配器模式. 一.普通路由例子 import Center from 'page/center'; import Data from 'page/data ...
- 某APK中使用了动态注册BroadcastReceiver,Launcher中动态加载此APK出现java.lang.SecurityException异常的解决方法
在某APK中,通过如下方法动态注册了一个BroadcastReceiver,代码参考如下: @Override protected void onAttachedToWindow() { super. ...
随机推荐
- Git命令行基本操作
Git--- download网址:https://git-scm.com/downloads 0. 安装Git 网上有很多Git安装教程,如果需要图形界面,windows下建议使用TortoiseG ...
- CS1704问题汇总
“/”应用程序中的服务器错误. 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误消息: CS1704: 已经导入了具有相同的 ...
- release 步骤
一:在新的 TR 里面创建自己的task 1: /n se01 进入自己的用户名下面 2:display 3:选中自己的名字右键>check object 4:选中自己的名字右键> dir ...
- workman项目设置开机自启动
https://blog.csdn.net/xxq929604980/article/details/78558317 http://man.linuxde.net/chkconfig 1.脚本编写 ...
- 关于 vue 日期格式的过滤
最近也在写公司几个单独页面,数据量比较,让前端来做,还不让angular,jquery? no no no~ 对于一个前端来说绑数据那么麻烦的一款 “经典的老东西“ ,我才不用, SO~ vue ...
- Python基础(九) type元类
python元类:type() 元类是python高阶语法. 合理的使用可以减少大量重复性的代码. 元类实际上做了以下三方面的工作: 干涉创建类的过程 修改类 返回修改之后的类 为什么使用元类? ...
- linux 下tftpf搭建
什么是TFTP服务 TFTP(Trivial File Transfer Protocol,简单文件传输协议) 是TCP/IP协议族中的一个用来在客户机与服务器之间进行 简单文件传输的协 ...
- ORA-00907: 缺失右括号,原因及解决办法整理
ORA-00907: 缺失右括号,原因及解决办法整理 1 union all中order by 导致缺失右括号 在有union all的子查询中使用了order by,会导致缺失右括号的错误,事实上在 ...
- win10忘记开机密码无法进入桌面
第一种: 电脑用微软账户登录,但密码始终不正确. 登陆这个网址 https://account.live.com/password/reset 按照提示的操作利用之前注册信息一步步重设密码 最后 ...
- zabbix 乱码问题
一.乱码原因 查看cpu负载,中文乱码如下 这个问题是由于zabbix的web端没有中文字库,我们最需要把中文字库加上即可 二.解决zabbix乱码方法 2.1 上传字体文件到zabbix中 找到本地 ...