職稱:
姓名:
重要度: 經驗值:
技能:
重要度: 經驗值:
技能:
{{ member.experience}}%
精簡版:http://jsbin.com/zagafi/1/edit
完整版:http://jsbin.com/vopuj/1/edit
一、首先設計新增的介面。
<div class="isa_info" style="margin-bottom:20px;background-color: #FFFFF4;">
職稱:
<input type="text" id="txtRole" placeholder="請輸入職稱" ng-model="pRole"/>
姓名:
<input type="text" id="txtRoleName" placeholder="姓名" ng-model="pName"/>
<br />
重要度:
<input type="number" id="txtRoleImportance" placeholder="1~5" ng-model="pImportance"/>
經驗值:
<input type="number" id="txtRoleExperience" placeholder="1~100" ng-model="pExperience"/>
<br>
技能:
<input type="text" id="txtRoleSkills" placeholder="以逗號區隔如a,b..." ng-model="pSkills"/>
<br />
<button class="button blue" ng-click="add()">新增</button>
</div>
然而我們可以順便設計controller內的add函式,其中skills欄位較特殊故須將之加以處理,以逗號分割多筆資料。
$scope.add = function() {//實作add函式 $scope.add = function() {//實作add函式 var skills = $scope.pSkills.split(","); $scope.members[$scope.pRole] = {"name": $scope.pName, "importance": $scope.pImportance, "experience": $scope.pExperience, "skills": skills}; };
二、接著在設計顯示的畫面,與之前不同的是在加入了ng-dblclick並且觸發點擊兩下後自動show出背後隱藏的面板,而隱藏的面板主要用以修改功能,修改後按下Update可更新資料並回覆原面版。
<div ng-repeat="(title, member) in members"> <div ng-hide="member.editing" ng-dblclick="member.editing = true;"> <div class="isa_info" style="width:100%;background-color: #BDE5F8;height: 35px;color: #333;"> <button class="button green " style="float:right;font-size: 15px;" type="button" ng-click="remove(title);">×</button> <span class="button red " style=" padding: 0px 0px;font-size: 24px;color:#FFF;border-radius: 15px;"> <span ng-repeat="n in []| getLoopTimes:member.importance"> ★ </span> </span> {{ title}}{{member.name}}→[{{member.skills.join(', ')}} ] <span class="button red " style=" padding: 0px 0px;font-size: 24px;color:#FFF;border-radius: 15px;"> <span ng-repeat="n in []| getLoopTimes:member.importance"> ★ </span> </span> </div> <div class="progress" > <span class="orange" style="width: {{ member.experience}}%;"><span>{{ member.experience}}%</span> </div> </div> <div ng-show="member.editing"> <input type="text" ng-model="title"> <input type="text" ng-model="member.name"> <input type="text" ng-model="member.importance"> <input type="text" ng-model="member.experience"> <input type="text" ng-model="member.skills"> <button ng-click="member.editing = false;">Update</button> </div> </div>而每個顯示的區塊中都包含了刪除的按鈕,故加入了下列按鈕程式碼。
此時我們在controller內也必須加入remove函式,刪除該行的key及values。<button class="button green " style="float:right;font-size: 15px;" type="button" ng-click="remove(title);">×</button>
$scope.remove = function(key) { delete $scope.members[key]; };原始資料如同之前一般
$scope.members = {
'神射手': {
name: '迪文',
importance: 5,
experience: 98,
skills: ['二連矢', '銳利射擊']
},
'騎士領主': {
name: '賽依連',
importance: 5,
experience: 95,
skills: ['狂擊', '艾斯敦攻擊']
},
'十字刺客': {
name: '艾勒梅斯',
importance: 4,
experience: 95,
skills: ['音速攻擊', '黑暗瞬間']
},
'魔導師': {
name: '凱特莉娜',
importance: 4,
experience: 90,
skills: ['暴風雪', '咖般塔音']
},
'神工匠': {
name: '哈沃得',
importance: 3,
experience: 70,
skills: ['大地之擊', '金錢攻擊']
},
'神官': {
name: '瑪嘉雷特',
importance: 2,
experience: 60,
skills: ['治癒術', '天使之怒']
}
};
三、完整版程式碼:
<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-2.1.0.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.14/angular.min.js"></script>
<link rel="stylesheet" href="https://aaad366b26125175724dd9c91cbade0cd1509dd0.googledrive.com/host/0B4GSVRY43FEXeUVOTlZNR0xqUkk/css/barAndInfo.css">
<link rel="stylesheet" href="https://aaad366b26125175724dd9c91cbade0cd1509dd0.googledrive.com/host/0B4GSVRY43FEXeUVOTlZNR0xqUkk/css/button.css">
<link rel="stylesheet" href="https://aaad366b26125175724dd9c91cbade0cd1509dd0.googledrive.com/host/0B4GSVRY43FEXeUVOTlZNR0xqUkk/css/searchbarAngular.css">
<script language="javascript">
var RoleApp = angular.module('RoleApp', [])
.controller('RoleCtrl', function($scope) {
$scope.members = {
'神射手': {
name: '迪文',
importance: 5,
experience: 98,
skills: ['二連矢', '銳利射擊']
},
'騎士領主': {
name: '賽依連',
importance: 5,
experience: 95,
skills: ['狂擊', '艾斯敦攻擊']
},
'十字刺客': {
name: '艾勒梅斯',
importance: 4,
experience: 95,
skills: ['音速攻擊', '黑暗瞬間']
},
'魔導師': {
name: '凱特莉娜',
importance: 4,
experience: 90,
skills: ['暴風雪', '咖般塔音']
},
'神工匠': {
name: '哈沃得',
importance: 3,
experience: 70,
skills: ['大地之擊', '金錢攻擊']
},
'神官': {
name: '瑪嘉雷特',
importance: 2,
experience: 60,
skills: ['治癒術', '天使之怒']
}
};
$scope.add = function() {//實作add函式
var skills = $scope.pSkills.split(",");
$scope.members[$scope.pRole] = {"name": $scope.pName, "importance": $scope.pImportance, "experience": $scope.pExperience, "skills": skills};
};
$scope.remove = function(key) {
delete $scope.members[key];
};
});
RoleApp.filter('getLoopTimes', function() {
return function(input, total) {
total = parseInt(total);
for (var i = 0; i < total; i++)
input.push(i);
return input;
};
});
</script>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<div id="RoleDiv" ng-app='RoleApp'>
<div style="margin-top:20px;" ng-controller="RoleCtrl" >
<div class="isa_info" style="margin-bottom:20px;background-color: #FFFFF4;">
職稱:
<input type="text" id="txtRole" placeholder="請輸入職稱" ng-model="pRole"/>
姓名:
<input type="text" id="txtRoleName" placeholder="姓名" ng-model="pName"/>
<br />
重要度:
<input type="number" id="txtRoleImportance" placeholder="1~5" ng-model="pImportance"/>
經驗值:
<input type="number" id="txtRoleExperience" placeholder="1~100" ng-model="pExperience"/>
<br>
技能:
<input type="text" id="txtRoleSkills" placeholder="以逗號區隔如a,b..." ng-model="pSkills"/>
<br />
<button class="button blue" ng-click="add()">新增</button>
</div>
<div ng-repeat="(title, member) in members">
<div ng-hide="member.editing" ng-dblclick="member.editing = true;">
<div class="isa_info" style="width:100%;background-color: #BDE5F8;height: 35px;color: #333;">
<button class="button green " style="float:right;font-size: 15px;" type="button" ng-click="remove(title);">×</button>
<span class="button red " style=" padding: 0px 0px;font-size: 24px;color:#FFF;border-radius: 15px;">
<span ng-repeat="n in []| getLoopTimes:member.importance">
★
</span>
</span>
{{ title}}{{member.name}}→[{{member.skills.join(', ')}} ]
<span class="button red " style=" padding: 0px 0px;font-size: 24px;color:#FFF;border-radius: 15px;">
<span ng-repeat="n in []| getLoopTimes:member.importance">
★
</span>
</span>
</div>
<div class="progress" >
<span class="orange" style="width: {{ member.experience}}%;"><span>{{ member.experience}}%</span>
</div>
</div>
<div ng-show="member.editing">
<input type="text" ng-model="title">
<input type="text" ng-model="member.name">
<input type="text" ng-model="member.importance">
<input type="text" ng-model="member.experience">
<input type="text" ng-model="member.skills">
<button ng-click="member.editing = false;">Update</button>
</div>
</div>
</div>
</div>
</body>
</html>
四、精簡版程式碼
<html> <head> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.14/angular.min.js"></script> <script language="javascript"> angular.module('RoleApp',[]) .controller('HelloCntl', function($scope) { $scope.friends = { john: { phone: '555-1276', address:'Taipei' }, mary: { phone: '800-BIG-MARY', address:'chyiai' }, mike: { phone: '555-4321', address:'kaisung' }, adam: { phone: '555-5678', address:'unlin' }, julie: { phone: '555-8765', address:'american' } }; $scope.add = function(){//實作add函式 $scope.friends[$scope.pName] = {"phone":$scope.pPhone,"address":$scope.pAddress}; }; $scope.remove = function(key){ delete $scope.friends[key]; }; }); </script> </head> <body> <div ng-app='RoleApp'> <div ng-controller="HelloCntl"> <div style="margin-bottom:20px;"> Name: <input type="text" id="name" placeholder="Name" ng-model="pName"> <br /> Phone: <input type="text" id="phone" placeholder="Phone" ng-model="pPhone"> <br /> Address: <input type="text" id="address" placeholder="Address" ng-model="pAddress"> <br> <button ng-click="add()">Add</button> </div> <div ng-repeat="(data, friend) in friends"> <div ng-hide="friend.editing" ng-dblclick="friend.editing=true;"> <button type="button" ng-click="remove(data);">×</button> {{data}} @ {{friend.phone}}@{{friend.address}} </div> <div ng-show="friend.editing"> <input type="text" ng-model="data"> <input type="text" ng-model="friend.phone"> <input type="text" ng-model="friend.address"> <button ng-click="friend.editing=false;">Update</button> </div> </div> </div> </div> </body> </html>
留言
張貼留言