我寫了一些待辦事項列表應用程序,瞭解如何成爲更專家。AngularJs/Javascript,複製對象是很好的做法?
什麼,我試着去理解:
我的問題是當任務用戶點擊編輯,因爲它通過引用傳遞的,所以如果用戶編輯任務時,它會直接更改任務的對象。 (我在這裏附上我的代碼)。
我的問題:
1)在我的代碼我寫,每次修復它,通過克隆對象的一種方式。 很好的做法?如果沒有你如何推薦我解決它?
2)因爲我不想我的代碼只工作,我想成爲更專家。 如果您認爲我對此代碼的思考和計劃不好?你如何編寫這個應用程序? (我這裏只講功能,添加,編輯,任務列表)
感謝幫助:)
鏈接plunker:https://plnkr.co/edit/CA99iiydbD4TWaGtJZZf?p=preview
代碼: HTML
<html ng-app="todos">
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.min.js"></script>
<script src="app.js"></script>
</head>
<body>
<div ng-controller="main">
<ul>
<li ng-repeat="task in todosBL.tasks" ng-click="editMode.edit(task)">{{ task.content}}</li>
</ul>
<input type="text" ng-model="task">
<input type="button" value="add task" ng-click="add(task)">
<!--//for edit-->
<div>
<input type="text" ng-model="editMode.task.content">
<input type="button" value="save task" ng-click="editMode.save(editMode.task)">
</div>
</div>
</body>
</html>
SCRIPT :
(function() {
var Task = (function() {
var counter = 0;
return function(content, isDone) {
this.id = counter++;
this.content = content;
this.isDone = isDone || false;
}
}());
var app = angular.module('todos',[])
.service('todosBL', function() {
this.tasks = [];
this.add = function(content) {
this.tasks.push(new Task(content));
}
this.update = function(editedTask) {
var i = this.tasks.findIndex(function(task){
return task.id === editedTask.id
});
this.tasks[i] = editedTask;
}
})
.controller('main', function($scope, todosBL) {
$scope.todosBL = todosBL;
$scope.add = function(task) {
todosBL.add(task);
$scope.task = null;
}
$scope.editMode = {
task: {},
edit: function(task) {
this.task = task;
//BECAUSE I PASS TASK BY REFERNCE WHEN USER EDIT TASK IT CHANGE TASK DIRECTLY ,
// IF I CLONE OBJECT EVERY TIME, IT FIX BY REFERENCE PROBLEM.
// MY QUESTION IF HAVE OTHER WAY TO SLOVE THIS. MABY OTHER WAY TO THINK ABOUT APP LIKE THIS.
// for(key in task) {
// this.task[key] = task[key];
// }
},
save: function(task) {
todosBL.update(task);
this.task = {};
}
};
});
}());
我認爲這是更適合http://codereview.stackexchange.com/作爲代碼的作品,但你想對它的意見。 – leroydev
在我的愚見中,你讓你的應用變得複雜。外部功能,工廠這樣一個簡單的應用程序? –
謝謝你的回答,但肯定它對這個應用程序很複雜。我的問題不是關於這個應用程序。我詢問有關思考或計劃的代碼。 我給這個應用程序例如我的問題。 我試着瞭解是否有更多專家的方式來編寫這個功能 –