Skip to content
This repository was archived by the owner on Apr 11, 2024. It is now read-only.

Commit 0eb2278

Browse files
committed
+ options.before, options.after
1 parent 3f79d60 commit 0eb2278

File tree

6 files changed

+219
-38
lines changed

6 files changed

+219
-38
lines changed

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "brix-bisheng",
3-
"version": "0.0.0",
3+
"version": "0.1.2",
44
"authors": [
55
"墨智 <mozhi.gyy@alibaba-inc.com>"
66
],

demo.html

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,19 @@
6060
resolve: function(content){
6161
$('.container').append(content)
6262
},
63+
// type
64+
// add delete update
65+
// text attribute block
6366
before: function(changes){
67+
_.each(changes, function(item, index){
68+
Loader.destrop( item.target )
69+
})
6470
console.log('before', changes)
6571
},
6672
after: function(changes){
73+
_.each(changes, function(item, index){
74+
Loader.boot( item.target )
75+
})
6776
console.log('after ', changes)
6877
}
6978
})

dist/bisheng.js

Lines changed: 104 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1272,7 +1272,7 @@ define(
12721272
return $0.replace(/(>)([\w\W]*?)(<)/g, function(_, $1, $2, $3) {
12731273
if ($2.indexOf('&lt;') > -1) {
12741274
var re = ''
1275-
HTML.convert($2).contents()._each(function(node /*, index*/ ) {
1275+
HTML.convert($2).contents().each(function(index, node) {
12761276
re += node.nodeValue
12771277
})
12781278
return $1 + re + $3
@@ -1416,6 +1416,28 @@ define(
14161416

14171417
$(target).remove()
14181418

1419+
if (options && options.after) {
1420+
options.after(
1421+
_.map(target, function(item, index) {
1422+
return {
1423+
type: ['delete', 'block'].join('_'),
1424+
target: item
1425+
}
1426+
})
1427+
)
1428+
}
1429+
1430+
if (options && options.before) {
1431+
options.before(
1432+
_.map(content, function(item, index) {
1433+
return {
1434+
type: ['add', 'block'].join('_'),
1435+
target: item
1436+
}
1437+
})
1438+
)
1439+
}
1440+
14191441
/* jshint unused: false */
14201442
content = HTML.convert(content).contents()
14211443
.insertAfter(locator)
@@ -1548,7 +1570,14 @@ define(
15481570
$(target).remove()
15491571

15501572
if (options && options.after) {
1551-
options.after([])
1573+
options.after(
1574+
_.map(target, function(item, index) {
1575+
return {
1576+
type: ['delete', 'block'].join('_'),
1577+
target: item
1578+
}
1579+
})
1580+
)
15521581
}
15531582

15541583
return
@@ -1574,11 +1603,31 @@ define(
15741603
}
15751604

15761605
toRemote.remove()
1606+
1607+
if (options && options.after) {
1608+
options.after(
1609+
_.map(toRemote, function(item, index) {
1610+
return {
1611+
type: ['delete', 'block'].join('_'),
1612+
target: item
1613+
}
1614+
})
1615+
)
1616+
}
1617+
15771618
}
15781619

15791620
content.each(function(index, element) {
15801621
// 新增节点
15811622
if (!target[index]) {
1623+
1624+
if (options && options.before) {
1625+
options.before([{
1626+
type: ['add', 'block'].join('_'),
1627+
target: element
1628+
}])
1629+
}
1630+
15821631
endLocator.parentNode.insertBefore(element, endLocator)
15831632

15841633
if (options && options.after) {
@@ -1593,6 +1642,14 @@ define(
15931642
}
15941643
// 节点类型有变化,替换之
15951644
if (element.nodeType !== target[index].nodeType) {
1645+
1646+
if (options && options.before) {
1647+
options.before([{
1648+
type: ['add', 'block'].join('_'),
1649+
target: element
1650+
}])
1651+
}
1652+
15961653
target[index].parentNode.insertBefore(element, target[index])
15971654

15981655
if (options && options.after) {
@@ -1611,6 +1668,13 @@ define(
16111668

16121669
target[index].parentNode.removeChild(target[index])
16131670

1671+
if (options && options.after) {
1672+
options.after([{
1673+
type: ['delete', 'block'].join('_'),
1674+
target: target[index]
1675+
}])
1676+
}
1677+
16141678
event.target.push(element)
16151679
return
16161680
}
@@ -1638,17 +1702,21 @@ define(
16381702
// 同是注释节点,则更新节点值
16391703
if (element.nodeType === 8 && element.nodeValue !== target[index].nodeValue) {
16401704

1641-
options.before([{
1642-
type: ['update', 'text'].join('_'),
1643-
target: target[index]
1644-
}])
1705+
if (options && options.before) {
1706+
options.before([{
1707+
type: ['update', 'text'].join('_'),
1708+
target: target[index]
1709+
}])
1710+
}
16451711

16461712
target[index].nodeValue = element.nodeValue
16471713

1648-
options.after([{
1649-
type: ['update', 'text'].join('_'),
1650-
target: target[index]
1651-
}])
1714+
if (options && options.after) {
1715+
options.after([{
1716+
type: ['update', 'text'].join('_'),
1717+
target: target[index]
1718+
}])
1719+
}
16521720

16531721
return
16541722
}
@@ -1657,19 +1725,37 @@ define(
16571725
// $(target[index]).removeClass('transition highlight')
16581726
if (element.outerHTML !== target[index].outerHTML) {
16591727

1660-
options.before([{
1661-
type: ['add', 'block'].join('_'),
1662-
target: element
1663-
}])
1728+
if (options && options.before) {
1729+
options.before([{
1730+
type: ['add', 'block'].join('_'),
1731+
target: element
1732+
}])
1733+
}
16641734

16651735
target[index].parentNode.insertBefore(element, target[index])
16661736

1737+
if (options && options.after) {
1738+
options.after([{
1739+
type: ['add', 'block'].join('_'),
1740+
target: element
1741+
}])
1742+
}
1743+
1744+
if (options && options.before) {
1745+
options.before([{
1746+
type: ['delete', 'block'].join('_'),
1747+
target: target[index]
1748+
}])
1749+
}
1750+
16671751
target[index].parentNode.removeChild(target[index])
16681752

1669-
options.before([{
1670-
type: ['delete', 'block'].join('_'),
1671-
target: target[index]
1672-
}])
1753+
if (options && options.after) {
1754+
options.after([{
1755+
type: ['delete', 'block'].join('_'),
1756+
target: target[index]
1757+
}])
1758+
}
16731759

16741760
event.target.push(element)
16751761
return

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "brix-bisheng",
3-
"version": "0.1.1",
3+
"version": "0.1.2",
44
"description": "",
55
"main": "index.js",
66
"scripts": {

0 commit comments

Comments
 (0)