無意中看到了一篇關於表現和數據分離的文章,詳細的看了一下,感覺和自己理解的不太一樣就有了這次的探尋
一、什么是表現和數據分離
說法1:表現和數據分離就是MVC,MVC 是將數據和業務邏輯分離由控制器分發,明顯不是
說法2:表現和數據分離就是Css和html+data分離,方便修改頁面的表現形式,如模板制作
說法3:表現和數據分離就是javascript中的MVC,將數據的獲取與數據的顯示分離
說法4:表現和數據分離就是javascript控制數據填充,html負責表現
其中
說法1明顯不符合,
說法2更應該稱之為表現與結構分離
說法3,下面是研究並復制別人的代碼
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="../jquery-1.7.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
//定義一個controller
var piliController = {
//選擇視圖
start: function () {
this.view.start();
},
//將用戶操作映射到模型更新上
set: function (name) {
this.model.setPerson(name);
}
};
piliController.model = {
piliKV: {
'葉小釵': '刀狂劍痴',
'一頁書': '百世經綸',
'素還真': '清香白蓮'
},
curPerson: null,
//數據模型負責業務邏輯和數據存儲
setPerson: function (name) {
this.curPerson = this.piliKV[name] ? name : null;
this.onchange();
},
//通知數據同步更新
onchange: function () {
piliController.view.update();
},
//相應視圖對當前狀態的查詢
getPiliAction: function () {
return this.curPerson ? this.piliKV[this.curPerson] + this.curPerson : '???';
}
};
piliController.view = {
//用戶觸發change事件
start: function () {
$('#pili').change(this.onchange);
},
onchange: function () {
piliController.set($('#pili').val());
},
update: function () {
$('#end').html(piliController.model.getPiliAction());
}
};
piliController.start();
});
</script>
</head>
<body>
<select id="pili">
<option value="葉小釵">葉小釵</option>
<option value="一頁書">一頁書</option>
<option value="素還真">素還真</option>
</select>
<div id="end"></div>
</body>
</html>
寫的確實很好的代碼,個人想法是為什么不將select在用js在view中生成?
說法4 那就是Ajax了,
將3和4兩種結合起來會不會更好一些。。。。。。。
寫了一半不知道該怎么往下寫了,等有好的想法再補充
如果有什么不對的,或者什么更好的想法一定要說哦~
