0

我有一些任务要做。我想确保每个任务都有一个 $1000 常量的 maximumFundPossible 属性,一个可变的 currentfund 属性,因为它会随着任务的资助而更新,一个预算属性对于每个任务项都是可变但不变的。该任务项属性在创建时必须设置为一定数量。我想我必须在创建任务期间添加一个输入字段来设置该数量?如何 ?

我已经有了我的待办事项,但我被困住了,因为我对 Angular 有几天的新手,我希望通过这个项目充分学习它。

如何修改我的代码以使我的待办事项具有上述属性?此外,当我单击执行按钮或免费执行按钮等时,我当前的视图会跟踪该特定任务 X 吗?我如何跟踪该任务 X,以便我的 do 、 doforfree 或我将使用的任何其他功能仅影响该特定任务 X。

我知道问的太多了,但是 angularjs 的学习曲线很高。非常感谢你的帮助

这是我的 todoController:

facebookExample.controller('todoController', ['$scope', function($scope) {
// Initialize the todo list array
//if local storage is null save the todolist to local storage
$scope.todoList = [];

if (localStorage.getItem("mytodos") === null)
{

 localStorage.setItem("mytodos", angular.toJson($scope.todoList));

 }else
 {
 //set the todolist from local storage
 $scope.todoList = angular.fromJson(localStorage.getItem("mytodos"));
 }


 // Add an item function
 $scope.todoAdd = function() {
 //check to see if text has been entered, if not exit
 if ($scope.todoInput === null || $scope.todoInput === ''){return;}

 //if there is text add it to the array
 $scope.todoList.push({todoText:$scope.todoInput, done:false});

 //clear the textbox
 $scope.todoInput = "";

 //resave the list to localstorage
 localStorage.setItem("mytodos", angular.toJson($scope.todoList));
 };



 // Each task is limited to limit total funding = $1000
 //current funding ; max funding; ballance funding = $1000-current
 // Variables or columns for taskX  





/****************/
// Task Counter for Task X
// If task-assignment is aproved by admin
// Set Task Counter to D-63
// Send reminder to Person assigned for task X in Due Date
// Do for money button is diabled unless task is funded
// Do for free is always enabled unless task is already assigned 








 /**************/
 //Updating state of task to done only on due date
 // if Dtime > DueDate
     // UserX can update task to done

     // Admin is notified by email of the action

     // Admin should aprove of disaprove within 3 days

     // Admin can aprove to Done or  Undone









 /*******************/
 // Admin aproves of Task X to done
 // Task X is updated to state of done


 //if for moeny and amount raised for task >

 // Payment is initiated to Tasker if task was funded and done for money
 // Payment initiated from Company to Admin if task was done for free






  //Do button
  $scope.do = function(){
  // If current user clicks do, 
  // Assign the current user to the task with a state of pending admin aproval

  // Counter variable for dute date is initiated with D-63
  };



 $scope.doForFree = function(){

 // Task is assigned to user with a state of pending-aproval-of-admin-     assignment-do-for-free
 // Admin is notified of do-for-free-request

 };



 // if admin aproves user that requested to do task X for money
   // task X is assigned to that user
   // state of task is assigned to admin-aproved-assignment-for-money
   // the User is notified of admin aproval
   // Task due date is created/updated




// if admin aproves user that requested to do task X for free
  // task X is assigned to that user
  // state of task is assigned to admin-aproved-assignment-for-free
  // the User is notified of admin aproval
  // Task due date is created/updated




 //fund button

 $scope.fund = function(){

 //Redirect current user to paypal for payment to You-Serve


 // Maximum payment cannot exceed Maximum amount - what 's already funded
   // Need to keep track of already funded amount 
   //  Need to keep track of task cost/price







 // If paypal payment was done successfully
    // Update already funded amount 
    // Update maximum amount for extra funding
    // update the fully funded variable/boolean
    // Send task/user/amount to database



 // If payment fails, take out state of being funded
 };





  $scope.remove = function() {
  //copy list
  var oldList = $scope.todoList;
  //clear list
  $scope.todoList = [];
  //cycle through list
  angular.forEach(oldList, function(x) {
  //add any non-done items to todo list
    if (!x.done) $scope.todoList.push(x);
 });
 //update local storage
 localStorage.setItem("mytodos", angular.toJson($scope.todoList));

};

//The Update function
//This waits 100ms to store the data in local storage
$scope.update = function() {
//update local storage 100 ms after the checkbox is clicked to allow it to     process
setTimeout(function(){
 localStorage.setItem("mytodos", angular.toJson($scope.todoList));
 },100);


};

}]);

这是我的观点:

<div ng-app="facebookExample" view-title="Tasks">
<div ng-controller="todoController">
<h1>Tasks</h1>

 <div class="item item-input-inset">
 <label class="item-input-wrapper">
 <!-- The actual input tag which is bound to the todoInput using ng-model -->
 <input type="text" placeholder="Add New Item" ng-model="todoInput" size="100"> 
 </label>
 <!-- Our button thay will call our funtion to add a new todo item -->
<button class="button button-small" ng-click="todoAdd()">
Add Task
</button>
</div>

  <div ng-repeat="x in todoList">
  <li class="item item-checkbox">
  &nbsp;&nbsp;&nbsp;<label class="checkbox">
  </label>
  <!-- this is the checkbox element, you will see it is bound to the done setting in the items array -->
  <!-- When clicked it calls the update function to update the item to its done status -->
  <input type="checkbox" ng-model="x.done" ng-click="update()"/>
  <!-- this is a span tag that shows the item text, I am using ng-bind, instead of the span tag we could have used {{x.todoText}} as well -->
  <button class="fund-button" style= "float: left;" ng-click="fund()">Fund</button>
  <span>{{x.todoText}}</span>
  <button class="doButton" style= "float: right; margin-right: 2px;" ng-click="do()">Do</button>
  </li>
  </div>
  <!-- the remove button will call the remove function and remoave all items that   are marked done -->
  <button class="button button-block button-assertive" ng-click="remove()">Remove Checked Tasks
  </button>
  </div>
   </div>:
4

1 回答 1

0

这是一个将项目从 ng-repeat 传递到您的操作的简单示例:

  <div ng-controller="MyCtrl">
    <input type="text" ng-model="newMessage">
    <button ng-click="addMessage(newMessage)">
    Add
    </button>
    <ul>
      <li ng-repeat="message in messages">
        {{message}}
        <button ng-click="remove(message, $index)">remove</button>
        <button ng-click="uppercase(message, $index)">uppercase</button>
        <button ng-click="lowercase(message, $index)">lowercase</button>
      </li>
    </ul>
  </div>

控制器:

function MyCtrl($scope) {
  $scope.newMessage = '';
  $scope.messages = [];
  $scope.addMessage = function(msg) {
    $scope.messages.push(msg);
  };
  $scope.remove = function(msg, index) {
    $scope.messages.splice(index, 1);
  };
  $scope.uppercase = function(msg, index) {
    $scope.messages[index] = msg.toUpperCase();
  };
  $scope.lowercase = function(msg, index) {
    $scope.messages[index] = msg.toLowerCase();
  };
}

查看 jsfiddle 并真正了解您的操作如何引用数据。例如,我使用隐式 $index 变量来访问消息数组。

http://jsfiddle.net/heavyhorse/x4b2w84c/

于 2015-12-16T19:58:52.933 回答