2017-09-13 18 views
0

私はangularjsを使用してかなり単純なタスクリストを持っているし、タスクを編集する場合、私は、各タスクが作成された時間を節約し、その時間を更新したいと思います。表示し、現在の日付の保存/編集スパン(angularjs)

私は、現在の時刻を表示するthisのようなものを使用することができます思っていたが、私は/編集、保存それを行うするかどうかはわかりません。

HTML:

<div ng-controller="TodoListController"> 
    <form ng-submit="addTodo()" name="form"> 
     <input type="text" ng-model="todoText" size="30" placeholder="Add New Entry" required id="textField" ng-model="myVar"> 
     <input class="btn-primary" type="submit" value="Save"> 
    </form> 
    <ul class="unstyled"> 
    <li ng-repeat="todo in todos | orderBy : $index:true"> 
     <button type="button" class="close" aria-label="Close" ng-click="remove(todo)"> 
     <span aria-hidden="true">&times;</span> 
     </button> 
     <span class="done-{{todo.done}}" ng-style="todo.customStyle" ng-hide="todo.editing" ng-click="updateVar($event)">{{todo.text}}</span> 
     <input type="text" ng-show="todo.editing" ng-model="todo.text"> 
     <button type="submit" ng-hide="todo.editing" ng-click="change(todo); todo.editing === true">Edit</button> 

     <button type="submit" ng-show="todo.editing" ng-click="save($index); todo.editing === false">Save</button> 
     <button type="submit" ng-show="todo.editing" ng-click="cancel($index); todo.editing === false">Cancel</button> 
    </li> 
    </ul> 
</div> 

JS:

var app = angular.module('todoApp', []); 
app.controller('TodoListController', ['$scope', function ($scope) { 
    $scope.todos = []; 
    $scope.newField = []; 
    $scope.customStyle = {}; 
    $scope.addTodo = function() { 
    $scope.todos.push({text: $scope.todoText, done: false, editing: false}); 
    $scope.todoText = ''; 
    }; 
    $scope.remaining = function() { 
    var count = 0; 
    angular.forEach($scope.todos, function (todo) { 
     count += todo.done ? 0 : 1; 
    }); 
    return count; 
    }; 
    $scope.delete = function() { 
    var oldTodos = $scope.todos; 
    $scope.todos = []; 
    angular.forEach(oldTodos, function (todo) { 
     if (!todo.done) $scope.todos.push(todo); 
    }); 
    }; 
    $scope.remove = function() { 
    $scope.todos.splice(this.$index, 1); 
    }; 
    $scope.change = function (field) { 
    var todoIndex = $scope.todos.indexOf(field); 
    $scope.newField[todoIndex] = angular.copy(field); 
    $scope.todos[todoIndex].editing = true; 
    }; 
    $scope.save = function (index) { 
    $scope.todos[index].editing = false; 
    }; 
    $scope.cancel = function (index) { 
    $scope.todos[index] = $scope.newField[index]; 
    }; 
    $scope.updateVar = function (event) { 
    $scope.myVar = angular.element(event.target).text(); 
    }; 
    $scope.editKeyword = function (name, index) { 
    $scope.mode[index] = 'edit'; 
    console.log(name); 
    }; 
}]); 
+0

だから何が問題のようですか? – Jax

+0

@Jax問題は自分のアイデアを既存のコードと一緒に入れています。私はそれを行う方法がわかりません –

答えて

0

ちょうど

$scope.todos.push({text: $scope.todoText, done: false, editing: false, todoDate: new Date()}); 

のようなTODOモデルでtodoDate属性を追加し、ユーザーがTODOオブジェクトすなわちを更新したときにそれを更新save()

$scope.save = function (index) { 
    $scope.todos[index].editing = false; 
    $scope.todos[index].todoDate = new Date(); 
}; 

はそれがお役に立てば幸いです。あなたは、単にcreatedOnフィールドを追加し、新たなトドスを追加する保存関数を呼び出す

-1
var app = angular.module('todoApp', []); 
app.controller('TodoListController', ['$scope', function ($scope) { 
    $scope.todos = []; 
    $scope.newField = []; 
    $scope.customStyle = {}; 
    $scope.addTodo = function() { 
    $scope.todos.push({text: $scope.todoText, done: false, editing: false, created: new Date()}); 
    $scope.todoText = ''; 
    }; 
    $scope.remaining = function() { 
    var count = 0; 
    angular.forEach($scope.todos, function (todo) { 
     count += todo.done ? 0 : 1; 
    }); 
    return count; 
    }; 
    $scope.delete = function() { 
    var oldTodos = $scope.todos; 
    $scope.todos = []; 
    angular.forEach(oldTodos, function (todo) { 
     if (!todo.done) $scope.todos.push(todo); 
    }); 
    }; 
    $scope.remove = function() { 
    $scope.todos.splice(this.$index, 1); 
    }; 
    $scope.change = function (field) { 
    var todoIndex = $scope.todos.indexOf(field); 
    $scope.newField[todoIndex] = angular.copy(field); 
    $scope.todos[todoIndex].editing = true; 
    $scope.todos[todoIndex].created = new Date(); 
    }; 
    $scope.save = function (index) { 
    $scope.todos[index].editing = false; 
    $scope.todos[index].created = new Date(); 
    }; 
    $scope.cancel = function (index) { 
    $scope.todos[index] = $scope.newField[index]; 
    }; 
    $scope.updateVar = function (event) { 
    $scope.myVar = angular.element(event.target).text(); 
    }; 
    $scope.editKeyword = function (name, index) { 
    $scope.mode[index] = 'edit'; 
    console.log(name); 
    }; 
}]); 
+0

なぜこの回答を投票してください? – lingthe

0

。ユーザーはTODOを編集し変更関数が呼び出されたときに、この更新藤堂は再び我々は単に変更を呼び出す必要がユーザーによって編集された場合

$scope.save = function (index) { 
    $scope.todos[index].editing = false; 
    $scope.todos[index].createdOn = new Date().getTime(); 
}; 

は今、今

$scope.change = function (field) { 
    var todoIndex = $scope.todos.indexOf(field); 
    $scope.newField[todoIndex] = angular.copy(field); 
    $scope.todos[todoIndex].editing = true; 
    $scope.todos[todoIndex].LastModifyOn = new Date().getTime(); 
    }; 

以下のようにしてください機能を更新し、LastModifyOnを更新します。

藤堂が作成されたとき、それが最後に更新されたときにこれを行うことによって、我々は次のように両方のデータを保持することができます。

+0

この問題は、エディション –

+0

の後でも、すべてのタスクが最初に作成されたのと同じ正確な時刻になることです。編集後、LastModifyOnは特定のtodoに対して変更され、createdOnは変更されません。 –

関連する問題