我已解決,是我自己打了斷點,但我沒想到重新編譯后,微信小程序打的斷點依然存在。
應該是這里 <el-date-picker v-model="value1" > 設置的初始值 value1設置成非Date對象,比如
"2018-01",這種字符串類型, 字符串類型對應就沒有 gethours方法了,所以報錯了。
數(shù)組好像只有push,shift系列的方法能觸發(fā),如果是循環(huán)把數(shù)組的每個元素都綁在視圖上理論上應該是可以更新的
先使用$("#id").spectrum("destroy");解除綁定
然后重新綁定一下試試
把題主的例子稍微復雜了下,考慮了全部相同導致 num++ 的情況,另,優(yōu)化了代碼
var a = [{
aId: 1,
aList: [{
bId: 22,
bList: [{
cId: 333,
cList: [{
dId: 4444,
num: 2
},
{
dId: 5555,
num: 1
}
]
}]
}]
}];
var b = [{
aId: 1,
aList: [{
bId: 22,
bList: [{
cId: 333,
cList: [{
dId: 5555,
num: 1
}, {
dId: 6666,
num: 1
}]
}]
},
{
bId: 33,
bList: [{
cId: 987,
cList: [{
dId: 5678,
num: 1
}]
}]
}
]
}];
var result = [{
aId: 1,
aList: [{
bId: 22,
bList: [{
cId: 333,
cList: [{
dId: 4444,
num: 2
},
{
dId: 5555,
num: 2
},
{
dId: 6666,
num: 1
}
]
}]
}, {
bId: 33,
bList: [{
cId: 987,
cList: [{
dId: 5678,
num: 1
}]
}]
}]
}];
console.log(JSON.stringify(reduce(a, b)) === JSON.stringify(result)); //true
function reduce(a, b) {
let levelArr = ['a', 'b', 'c', 'd'],
//如果后面還有 e,f,g 只需要修改這里就行;
result = iterateCompareId(a, b, undefined, 'a');
function iterateCompareId(listA, listB, listTemp, level) {
// 保存 listA 的副本,后期把 listB 中的數(shù)據(jù)逐步加給 listTemp,作為函數(shù)返回值;
// 注意這里 listTemp 反復迭代,但始終指向的是保存在內存里的同一個對象,一直在修改 listTemp 的數(shù)據(jù);
listTemp = listTemp === undefined ? JSON.parse(JSON.stringify(listA)) : listTemp;
listB.forEach((objB, indexB) => {
//求出當前 level 中, listB 中項在 listA 中的索引,不存在,則返回 -1
let IndexOfIdInA = listA.findIndex((objA, indexA) => {
return objA[level + 'Id'] === objB[level + 'Id'];
});
//如果當前 level 中,listA 中 沒有 listB 的 id,把 listB 這個level的數(shù)據(jù)拷給 listTemp
if (IndexOfIdInA === -1) {
listTemp.push(objB);
} else {
//如果有,判斷是否到最后一層
//不是最后一層,切換到下一層 level,繼續(xù)
//是最后一層,listTemp 當前層 num+=1;
if (levelArr.indexOf(level) != levelArr.length - 1) {
iterateCompareId(listA[IndexOfIdInA][level + 'List'], objB[level + 'List'], listTemp[IndexOfIdInA][level + 'List'], levelArr[levelArr.indexOf(level) + 1]);
} else {
listTemp[IndexOfIdInA].num += 1;
}
}
});
return listTemp;
}
return result;
}參考簡數(shù)的博客教程:http://blog.jianshukeji.com/2... (示例中包含地圖)
不能反向獲取openid,有個一個解決辦法是讓用戶在公眾號里點擊一個鏈接來獲取openid和unionid
你如果用代碼獲取, 那你要看瀏覽器里面,獲取圖片的時候, 發(fā)送了哪些cookie,哪些參數(shù),哪些http頭。如果保證這些一樣, 就可以正常獲取。
加個鎖,移入的時候確保不會二次彈出
1 先用白色蓋住body
2 遍歷網(wǎng)站的img 跟backgroundImage 統(tǒng)計數(shù)量 用100除這個數(shù)量 得到一個數(shù)‘i’ 這個數(shù)值就是進度條移動的一張圖的距離
3 用imagesLoaded 判斷每完成一張圖的讀取 就進度條增加剛才計算的距離
當load的圖片數(shù)量 == 網(wǎng)頁圖片數(shù)量時候 就讓進度條跟白色遮罩fadeOut
完成
恩, 是的啦, 因為遞歸的話可能是:
<parent>
<child>
<child>
<child>
</child>
</child>
</child>
</parent>
那么最里層的child的父組件本來就是倒數(shù)第二層的子組件~
已解決,把npm換成cnpm就OK了,這鬧的,以后類似的問題可以這樣試試
先附一段解決后的完整代碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><span class="glyphicon glyphicon-th-list"></span> MVVM</h3>
</div>
<div class="panel-body">
<!-- vm -->
<div id="vm">
<h3>{{ title }}</h3>
<ol>
<li v-for="todo in todos">
<dl>
<dt contenteditable="true" v-on:blur="update(todo, 'name', $event)">{{ todo.name }}</dt>
<dd contenteditable="true" v-on:blur="update(todo, 'description', $event)">{{ todo.description }}</dd>
<dd><a href="#0" v-on:click="remove(t)">Delete</a></dd>
</dl>
</li>
</ol>
</div>
<!-- vm -->
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><span class="glyphicon glyphicon-plus"></span> Add New Todo</h3>
</div>
<div class="panel-body">
<!-- vmAdd -->
<form id="vmAdd" action="#0">
<div class="form-group">
<label>Name:</label>
<input type="text" v-model="name" class="form-control" placeholder="Enter name">
</div>
<div class="form-group">
<label>Description:</label>
<input type="text" v-model="description" class="form-control" placeholder="Enter description">
</div>
<button type="submit" class="btn btn-default" v-on:click.prevent="submit">Add</button>
</form>
<!-- vmAdd -->
</div>
</div>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js"></script>
<script>
// 集成API
//https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/00147576011615487c65971b3bd4acfa8ee94baaab3dbf7000
var bus = new Vue()
var vm = new Vue({
el: '#vm',
data: {
title: 'TODO List',
todos: [],
},
mounted: function() {
// bus.$on('todo', function(todo) {
// console.log(todo);
// this.todos.push(todo);
// }.bind(this))
},
created: function() {
this.init();
},
methods: {
init: function() {
this.todos = [{
name: "kavan",
description: "foo"
},
{
name: "lili",
description: "bar"
}
]
},
create: function(todo) {
const todo_new = { ...todo }
console.log(todo_new)
this.todos.push(todo_new)
},
update: function(todo, prop, event) {
todo[prop] = event.target.innerText
}
}
});
var vmAdd = new Vue({
el: '#vmAdd',
data: {
name: '',
description: ''
},
methods: {
submit: function() {
console.log(vm)
vm.create(this.$data)
this.name = '';
this.description = '';
}
}
});
</script>
</body>
</html>
先吐槽一下你的代碼,為什么要用兩個 vue 實例……,其實用一個更簡潔一點。
然后是你上面的問題
我的改動是這個地方
create: function(todo) {
const todo_new = { ...todo } // 復制值
console.log(todo_new)
this.todos.push(todo_new)
},
這里其實是一個 js 基礎問題,關于對象的引用,其實是引用的對象的一個指針。例如下面
var obj = { name: 'lw' }
var obj_new = obj
// 這里 obj 和 obj_new 他們都保存的是指向同一個對象的一個指針,而不是對象的值
// 例如下面這樣
obj_new.name = 'xm'
// 你會發(fā)現(xiàn) obj.name 的值也會變?yōu)?xm 而不是原來的 lw
然后你的問題就明了了,你傳遞給 vm 的對象,把 vmAdd 對值的跟蹤處理(get,set)也一起傳入。這樣的話,其實你傳入的這個值和 vmAdd 中的 data 指向的對象是同一個。
所以解決方法就是把這個對象深度復制一下,然后傳入對象的值而不是傳入對象的一個引用。
就算加了幾個字段,但是首字母和index對應關系還是沒變! 還是不需要散列函數(shù)呀?
插入號(caret)+指定版本:比如?1.2.2,表示安裝1.x.x的最新版本(不低于1.2.2),但是不安裝2.x.x,也就是說安裝時不改變大版本號。
1.有個問題,template里為什么不讓加
2.如果template確實不讓加,那就在你組件的mounted里用js加
var oHead = document.getElementsByTagName('HEAD').item(0);
var oScript= document.createElement("script");
oScript.type = "text/javascript";
oScript.src="test.js";
oHead.appendChild( oScript);
看你貼 上來的代碼 .
有一半的機率是你做異步代碼分割的時候有問題..
你可以試著一行一行的注釋來檢查一下..有可能是分割的時候.js引用順序錯了
有些模塊 在index頁需要,
但代碼分割把他分到其他異步模塊去了..
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產(chǎn)業(yè)為響應國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產(chǎn)業(yè)鏈。利用北京大學優(yōu)質教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經(jīng)驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。