簡體   English   中英

是否可以在angularjs中從控制器調用特定函數?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM