[英]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.