[英]Is it possible to call a particular function from controller in angularjs?
我是MEAN堆栈开发的初学者并做了Todo应用程序,其中我正在创建任务表,然后使用angularjs将todo存储在该特定任务表中。
最初,我只是检索所有待办事项,而不考虑它属于哪个任务表以及创建todos。 现在我想要增强它以仅检索特定任务表的待办事项。 由于我动态地想要加载它,我正在使用值为'/:TaskID'
routeProvider,其中TaskID正在改变。 因此,如果TaskID存在,我正在使用一个函数,否则检索所有内容。
像这样的东西:
if($routeParams.TaskID) {
var id = $routeParams.TaskID;
Todos.getTodosForId(id)
.success(function(data) {
$scope.loading = false;
$scope.formData = {}; // clear the form so our user is ready to enter another
$scope.todos = data; // assign our new list of todos
});
} else {
// GET=====================================================================
// when landing on the page, get all todos and show them
// use the service to get all the todos
Todos.get()
.success(function(data) {
for(var i = 0; i < data.length; i++) {
$scope.todos.push(data[i]);
}
$scope.loading = false;
});
}
而不是使用if-else,是否可以保持它们独立? 就像我想让它们都可以用来消除这种情况。 是否可以在此处调用方法: 对于特定的TaskID:
.when('/:TaskID',
{
templateUrl: "app.html",
controller: "mainController"
})
对于所有待办事项:
.when('/',
{
templateUrl: "app.html",
controller: "mainController"
})
另一个问题是,如何在创建任务表时仅为该特定任务表显示待办事项?
如图所示,我的页面显示所有待办事项,而不是尚未创建的待办事项。 因此,它应该最初向我显示No Todos
,而不是显示所有No Todos
。 一旦我开始添加待办事项,我应该只看到该任务表下的那些待办事项。 我有点困惑,我应该如何实现它呢?
如果要在控制器和模板中的任何位置调用这些函数,可以将它们归属于$scope
变量,如下所示:
$scope.cleanForm = function(data) {
$scope.loading = false;
$scope.formData = {};
$scope.todos = data;
};
$scope.loadForm = function(data) {
$scope.todos = data;
$scope.loading = false;
};
if($routeParams.TaskID) {
var id = $routeParams.TaskID;
Todos.getTodosForId(id).success($scope.cleanForm(data));
} else {
Todos.get().success($scope.loadForm(data));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.