第一种方法要比第二种更省事

if (!row.alert_at) return; 
if(row.alert_at){
} else {
}

v-for="todo in list"  // 任务 在 列表 (列表中的任务)

window自带的方法,里边的this向最外层的window

比如:

forEach(funtion(row, i){

})

setInterval(function(){

}, 1000)

var me = this  //用me把this缓存一下
this.check_alerts(); //this指向实例
setInterval(function () {
console.log('this:', this); //this指向最外层 window,不是指向实例
}, 1000);

回调函数

//子组件触发
Event.$emit(name, params); //父级监听
Event.$on('remove', function (aa) { //回调函数,参数aa就是参数params
  console.log('aa:', aa);
})

子组件不能直接操作父级的数据

只有父级来操作你,不能你操作父级,数据一定要单向流动。需要在子组件里边通过methods来告诉父级你想要干什么。

组件和组件间通信,或者组件和vue实例通信,在上边新建一个Event(事件调度中心)

var Event = new Vue();

Event.$emit(name, params);  //把Event这个实例作为一个事件调度中心,把name触发($emit)出去,后边给一个params(传参)

Vue.component('task', {
template: '#task-tpl',
props: ['todo'],
methods: {
action: function (name, params) { //action:行为 name:行为的名称(你想干什么) params:行为的传参
Event.$emit(name, params);
}
}
})

Event里边的this要注意(作用域)

var me = this;     //把this缓存一下

Event.$on('remove', function (id) {
if (id) {
me.remove(id);
}
})
<task :todo="todo"></task>

Vue.component('task', {
template: '#task-tpl',
props: ['todo']
}); // 自定义组件task,他需要的数据是todo,通过 :(v-bind),把变量 todo 给他传进去 // <task a="1" :todo="todo"></task>,如果 "a" 在 props 里边不存在,vue不知道你在说什么,必须在props里边传了(["todo"]),他才会去解析

vue中数组的元素 修改 用vue.set()

this.list[index] = Object.assign({},this.current); //不行,vue检测不到
Vue.set(this.list, index, copy(this.current));  //可以,vue可以检测的到
Vue.set(this.list[i], 'complete', !this.list[i].completed); //可以,vue可以检测的到
{{todo.desc || '暂无详情'}}   // || 否则(如果没有)

watch: 监控

watch: {
list: { //属性名称(监控对象) 每次当list发生变化的时候,自动执行handler函数
deep: true,
handler: function (n, o) { //handler:处理(用手段去处理)
if (n) {
ms.set('list', n);
} else {
ms.set('list', []);
}
}
}
}

some() 返回 判断

array.some( function(currentvalue){
  return currentvalue == aa // return currentvalue.id == 11 (如果要查询的 对象 具有id属性)
}) //some 检测数组中的元素是否满足指定条件(函数提供),如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测,
                          //如果没有满足条件的元素,则返回false
//sonme 里边是个函数
//currentvalue参数 要查询的 对象 当前的 元素
var ages = [3, 10, 18, 20];

function checkAdult(age) {
return age >= 18;
} function myFunction() {
document.getElementById("demo").innerHTML = ages.some(checkAdult);
} //true

forEach() 迭代

array.forEach(function(currentValue, index){
  this.value
})
//forEach 调用数组的每个元素,并将元素传递给回调函数。
//forEach 里边是个函数
//currentvalue参数 要查询的 对象 当前的 元素, index参数 当前元素的索引值
<button onclick="numbers.forEach(myFunction)">点我</button>
<p id="demo"></p> <script>
demoP = document.getElementById("demo");
var numbers = [4, 9, 16, 25]; function myFunction(item, index) {
demoP.innerHTML = demoP.innerHTML + "index[" + index + "]: " + item + "<br>";
}
</script> //
index[0]: 4
index[1]: 9
index[2]: 16
index[3]: 25

find() 返回要寻找的元素

array.find( function(currentvalue){
  return currentvalue == aa // return currentvalue.id == 11 (如果要查询的 对象 具有id属性)
}) //find 返回 传入一个测试条件(函数)符合条件的数组第一个元素
//find 里边是个函数
//currentvalue参数 要查询的 对象 当前的 元素
var ages = [3, 10, 18, 20];

function checkAdult(age) {
return age >= 18;
} function myFunction() {
document.getElementById("demo").innerHTML = ages.find(checkAdult);
}
//18

findIndex() 返回要寻找的下标

var ages = [3, 10, 18, 20];

function checkAdult(age) {
return age >= 18;
} function myFunction() {
document.getElementById("demo").innerHTML = ages.findIndex(checkAdult);
} //

数组自带 index(数组元素的下标)

splice()

array.splice(index,howmany,item1,.....,itemX)
//index: 必需,从何处 添加/删除 数组, 该参数是开始 添加/删除 数组元素的下标
//howmany: 必需,应该删除多少元素,可以是0 (0的情况是添加)
//intemX: 可选,要添加到数据的 新元素

插入:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,0,"Lemon","Kiwi"); //Banana,Orange,Lemon,Kiwi,Apple,Mango

删除并插入

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,1,"Lemon","Kiwi"); // Banana,Orange,Lemon,Kiwi,Mango

删除

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,2); //Banana,Orange
computed \ methods  里边是(各种)函数,函数里边调用变量用this. 

computed 里边是 (各种)函数返回对象

实例中data是对象, 在组件中(在其他里边)data是函数返回对象

Object assign

Object.assign(target, ...sources)

克隆对象

var obj = {a: 1};
var copy = Object.assign({}, obj);
console.log(copy); // {a: 1};

合并对象

var o1 = {a: 1};
var o2 = {b: 2};
var o3 = {c: 3}; var obj = Object.assign(o1, o2, o3);
console.log(obj); //{a: 1, b: 2, c: 3}
console.log(o1); //{a: 1, b: 2, c: 3}, 目标对象被改变了

js中if条件为null/undefined/0/NaN/""表达式时,统统被解释为false,此外均为true

push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

v-model:把当前这个input里边的值指到哪里

<input v-model="current.title" id="task-input" type="text">

JSON.stringify() 方法将 JavaScript对象 转换为 JSON字符串。

JSON.parse() 方法将 JSON字符串 转换为 JavaScript对象。

<p id="demo"></p>

<script>

var obj = { "name":"runoob", "alexa":10000, "site":"www.runoob.com"};
var myJSON = JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON; </script> //运行结果:{"name":"runoob","alexa":10000,"site":"www.runoob.com"}
<p id="demo"></p>
<script>
var text = '{"employees":[' +
'{"name":"菜鸟教程","site":"http://www.runoob.com" },' +
'{"name":"Google","site":"http://www.Google.com" },' +
'{"name":"Taobao","site":"http://www.taobao.com" }]}';
obj = JSON.parse(text);
document.getElementById("demo").innerHTML = obj;
</script> //运行结果:[object Object] <p id="demo"></p>
<script>
var text = '{"employees":[' +
'{"name":"菜鸟教程","site":"http://www.runoob.com" },' +
'{"name":"Google","site":"http://www.Google.com" },' +
'{"name":"Taobao","site":"http://www.taobao.com" }]}';
obj = JSON.parse(text);
document.getElementById("demo").innerHTML =
obj.employees[1].name;
</script> //运行结果:Google
<p id="demo"></p>
<script>
var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
document.getElementById("demo").innerHTML = person;
</script> //运行结果:[object Object] <p id="demo"></p>
<script>
var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
document.getElementById("demo").innerHTML = person.firstName;
</script> //运行结果:John

vue实例相关的更多相关文章

  1. vue实例相关2

    vue data中 对象/数组 不为空,即使定义为[]/{} new Vue({ el: '#main', data: { list: [], current: {}, aa:'' } }) cons ...

  2. vue第六单元(vue的实例和组件-vue实例的相关属性和方法-解释vue的原理-创建vue的组件)

    第六单元(vue的实例和组件-vue实例的相关属性和方法-解释vue的原理-创建vue的组件) #课程目标 掌握vue实例的相关属性和方法的含义和使用 了解vue的数据响应原理 熟悉创建组件,了解全局 ...

  3. 05-Vue入门系列之Vue实例详解与生命周期

    Vue的实例是Vue框架的入口,其实也就是前端的ViewModel,它包含了页面中的业务逻辑处理.数据模型等,当然它也有自己的一系列的生命周期的事件钩子,辅助我们进行对整个Vue实例生成.编译.挂着. ...

  4. Vue实例对象的数据选项

    前面的话 一般地,当模板内容较简单时,使用data选项配合表达式即可.涉及到复杂逻辑时,则需要用到methods.computed.watch等方法.本文将详细介绍Vue实例对象的数据选项 data ...

  5. vue.js开发环境搭建以及创建一个vue实例

    Vue.js 是一套构建用户界面的渐进式框架.Vue 只关注视图层, 采用自底向上增量开发的设计.Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件. 在使用 vue.js ...

  6. Vue 实例中的生命周期钩子

    Vue 框架的入口就是 Vue 实例,其实就是框架中的 view model ,它包含页面中的业务处理逻辑.数据模型等,它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻 ...

  7. vue2.0 关于Vue实例的生命周期

    什么是生命周期 Vue实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.卸载等一系列过程,我们称这是Vue的生命周期.通俗说就是Vue实例从创建到销毁的过 ...

  8. vue学习笔记(四)——Vue实例以及生命周期

    1.Vue实例API 1.构造器(实例化) var vm = new Vue({ //选项 |-------DOM(3) |   |-------el (提供一个在页面上已存在的 DOM 元素作为 V ...

  9. Vue01 Vue介绍、Vue使用、Vue实例的创建、数据绑定、Vue实例的生命周期、差值与表达式、指令与事件、语法糖

    1 Vue介绍 1.1 官方介绍 vue是一个简单小巧的渐进式的技术栈,它提供了Web开发中常用的高级功能:视图和数据的解耦.组件的服用.路由.状态管理.虚拟DOM 说明:简单小巧 -> 压缩后 ...

随机推荐

  1. Java类文件结构详解

    概述: Class文件结构是了解虚拟机的重要基础之一,如果想深入的了解虚拟机,Class文件结构是不能不了解的.Class文件是一组以8位字节为基础单位的二进制流,各项数据项目严格按照顺序紧凑地排列在 ...

  2. Linux IO性能分析blktrace/blk跟踪器

    关键词:blktrace.blk tracer.blkparse.block traceevents.BIO. 本章只做一个记录,关于优化Block层IO性能方法工具. 对Block层没有详细分析,对 ...

  3. Generative Adversarial Nets[content]

    0. Introduction 基于纳什平衡,零和游戏,最大最小策略等角度来作为GAN的引言 1. GAN GAN开山之作 图1.1 GAN的判别器和生成器的结构图及loss 2. Condition ...

  4. "INSTALL_FAILED_DUPLICATE_PERMISSION "错误解决

    我们在进行Android组件安全测试时,如果遇到声明了权限的组件,在编写PoC时,可能会遇到如下错误提示: INSTALL_FAILED_DUPLICATE_PERMISSION perm=com.m ...

  5. JS表格分页(封装版)

    HTML代码: <html> <head> <meta charset='utf-8'> <script type="text/javascript ...

  6. C#调用迅雷下载,调用迅雷影音播放

    方法很多种,这里介绍一种,通过命令行参数调用. try { ]; Process.Start(thunderPath, "http://www.baidu.com/abc.exe" ...

  7. Xamarin Android ListView 控件使用

    在项目中通常用到了ListView控件,示例如下: create the listitem class ,eg; public class ColorItem { public string Colo ...

  8. functools下的partial模块应用

    问题 你有一个被其他python代码使用的callable对象,可能是一个回调函数或者是一个处理器, 但是它的参数太多了,导致调用时出错. 解决方案 如果需要减少某个函数的参数个数,你可以使用 fun ...

  9. Codeforces Round #485 (Div. 2)-B-High School: Become Human

    B. High School: Become Human time limit per test 1 second memory limit per test 256 megabytes input ...

  10. Deflation Methods for Sparse PCA

    目录 背景 总括 Hotelling's deflation 公式 特点 Projection deflation 公式 特点 Schur complement deflation Orthogona ...