2015-12-16 37 views
0

我有一些任務要做。我想確保每個任務都有一個1000美元不變的maximumFundPossible屬性,一個currentfund屬性是可變的,因爲它將在任務得到資助時更新,一個預算屬性是可變的,但對於每個任務項目都是不變的。該任務項目屬性在創建時必須設置爲一定數量。我想我將不得不添加一個輸入字段,以便在任務創建期間設置這個數量?怎麼樣 ?如何確保我角模型的每個實例都具有某些特徵?

我已經有我的待辦事項任務,但由於我是新角色的幾天,所以我被卡住了,我希望通過此項目充分了解它。

如何修改我的代碼,以便我的待辦事項任務具有上述屬性?另外,當我點擊do按鈕或免費按鈕等時,我當前的視圖是否會跟蹤該特定任務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>: 
+0

您真的需要簡化問題,因爲它正在混淆業務規則。首先,您可以將值「項目」傳遞給您的操作,如do(item)和fund(item)以及remove(item)。只是改變你的功能,使它需要一個項目的參數。 – heavyhorse

回答

0

我這裏是從NG-重複傳遞一個項目的簡單你的行爲:

<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/

+0

任何想法我會如何做到這一點在我的具體情況? – codigomonstruo

相關問題