是否有可能在angularjs中从控制器调用一个特定的函数?

我是MEAN堆栈开发的初学者,做了一个Todo应用程序,其中我创build任务表,然后使用angularjs存储在特定任务表的待办事项中。

最初,我只是在不考虑它属于哪个任务表的情况下检索所有的待办事项,并且正在创build待办事项。 现在我想增强它来检索只有特定的任务表的todos。 由于我dynamic地想要加载它,我正在使用具有值'/:TaskID' ,其中TaskID正在改变的routeProvider。 所以如果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" }) 

对于所有Todos:

 .when('/', { templateUrl: "app.html", controller: "mainController" }) 

另一个问题是,如何在创build任务表时显示特定任务表的待办事项?

如图所示,我的页面正在显示所有待办事项,而不是尚未创build的待办事项。 所以,而不是显示所有的待办事项,它应该初步告诉我No Todos 。 一旦我开始添加待办事项,我应该只看到那个任务表下的待办事项。 我有点困惑,我该如何去实现它?

如果你想在控制器的任何地方和你的模板中调用这些函数,你可以像下面这样将它们赋值给$scopevariables:

 $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)); }