AngularJS - 做应用程序将提交和删除功能放入工厂
AngularJS - To Do App Place Submit and Delete Function into Factories
我创建了一个简单的待办事项应用程序,在处理它时,我觉得我最终会在控制器中放置太多代码,最终会变得混乱且难以阅读。我想知道如何将我的函数移动到工厂中,以便我的代码看起来更干净。
这是我的JS:
angular.module('toDoApp', [])
.controller('toDoCtrl', function($scope){
//set $scope variables
$scope.tasks = [];
$scope.submitTask = function(){
$scope.tasks.unshift($scope.enteredTask);
$scope.enteredTask = '';
};
$scope.removeTask = function(task) {
var i = $scope.tasks.indexOf(task);
$scope.tasks.splice(i, 1);
};
})
.factory('toDoFactory', ['$http', function($http){
return function(newTask) {
};
}])
如果需要,以下是 HTML:
<form ng-submit="submitTask()">
<!-- task input with submit button -->
<label>Task: </label>
<input type="text" placeholder="Enter Task" ng-model="enteredTask" required>
<button>Submit</button>
</form>
<div>
<!-- create unordered list for task that are submitted
need check boxes -->
<ul>
<li ng-repeat="task in tasks">
{{ task }}
<button ng-click="removeTask()">x</button>
</li>
</ul>
</div>
正如你所看到的,我有点开始了工厂,但只是不知道该怎么做。任何建议将不胜感激。
您需要将
工厂注入控制器,然后使用控制器在工厂中定义的方法:
angular.module('toDoApp', [])
.controller('toDoCtrl', function($scope, toDoFactory){
//set $scope variables
$scope.tasks = [];
$scope.submitTask = function(){
toDofactory.submittask(); //Just for demo.Passin your parameters based on your implementation
};
$scope.removeTask = function(task) {
var i = $scope.tasks.indexOf(task);
$scope.tasks.splice(i, 1);
};
})
.factory('toDoFactory', ['$http', function($http){
var methods = {};
methods.submittask = function(){
//your logic here
};
methods.removetask = function(){
//your logic here
}
return methods;
}])
var app = angular.module('toDoApp', []);
app.controller('toDoCtrl', function($scope, toDoFactory){
$scope.tasks = [];
toDoFactory.get = function(){
}
toDoFactory.delete = function(){
}
toDoFactory.update = function(){
}
});
app.factory('toDoFactory', ['$http', function($http){
var todo = {};
todo.get = function(){
};
todo.delete = function(){
};
todo.update = function(){
}
return todo;
}]);
这是简单的架构,可以添加更多逻辑,确保您了解依赖注入 (DI)
对于那些
想要查看插入所有代码时最终结果会是什么样子的人来说,这是答案。再次感谢您的回答,因为它能够引导我朝着正确的方向前进。
.controller('toDoCtrl', function($scope, toDoFactory){
$scope.tasks = toDoFactory.tasks;
$scope.submitTask = function(){
toDoFactory.submitTask($scope.enteredTask);
$scope.enteredTask = '';
};
$scope.removeTask = function(task) {
toDoFactory.removeTask();
};
})
.factory('toDoFactory', ['$http', function($http){
var toDo = {
tasks: [],
enteredTask: '',
submitTask: function(task){
toDo.tasks.unshift(task);
},
removeTask: function(task) {
var i = toDo.tasks.indexOf(task);
toDo.tasks.splice(i, 1);
}
};
}])
相关文章:
- 删除CKEditor工具栏按钮,但不删除功能
- 主体单击删除功能上的输入框宽度
- 突然停止功能,删除队列
- 删除Highmaps的放大/缩小功能
- 在以下情况下,如何使用AJAX实现删除功能
- 删除滚动条,但保留滚动功能
- 在D3中设置缩放功能后,如何删除缩放功能
- 当我的响应菜单打开时,我如何删除用户转到侧面的功能
- 如何在更改屏幕大小时删除功能(菜单响应)
- 在我的项目中,添加、删除和编辑功能不起作用
- 删除功能不工作angularjs
- 是的,没有带有链接的JavaScript删除功能的选项
- 单击时从内存中删除功能
- 索引数据库:删除功能不起作用
- 我的Ruby在轨道上删除功能不起作用
- 二叉搜索树“删除”功能的优化
- 使用javascript功能删除图像
- 单击功能删除随机ID
- highcharts系列删除功能删除所有原始系列数据(即使存储在新变量中)
- 下拉菜单列表点击功能删除活动文本并添加所选文本