首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在angularjs中可以从控制器调用特定的函数吗?

在angularjs中可以从控制器调用特定的函数吗?
EN

Stack Overflow用户
提问于 2015-12-26 15:09:26
回答 1查看 216关注 0票数 5

我是一个平均堆栈开发和做Todo应用程序的初学者,在其中我创建任务单,然后使用angularjs存储在特定的任务单中。

最初,我只是检索所有的待办事项,而不考虑它属于哪个任务表,也没有考虑如何创建待办事项。现在,我想增强它,只检索特定任务单的待办事项。因为我动态地想要加载它,所以我使用的是值routeProvider和值'/:TaskID',其中TaskID正在改变。因此,如果存在TaskID,我将使用一个函数,否则将检索所有内容。

就像这样:

代码语言:javascript
复制
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-否则,它有可能保持他们的独立性吗?就像我想让他们两个人都能用掉那个条件一样。是否可以在这里调用方法:用于特定的TaskID :

代码语言:javascript
复制
.when('/:TaskID', 
    {
        templateUrl: "app.html",
        controller: "mainController"
    }) 

For All Todos :

代码语言:javascript
复制
.when('/', 
    {
        templateUrl: "app.html",
        controller: "mainController"
    }) 

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

如图所示,我的页面显示的是所有待办事项,而不是尚未创建的待办事项。所以,它不应该显示所有的待办事项,它应该首先向我展示No Todos。一旦我开始添加待办事项,我应该只看到任务表下的那些待办事项。我有点困惑,我该怎么做才能实现呢?

EN

回答 1

Stack Overflow用户

发布于 2016-01-27 17:47:37

如果您想在控制器和模板中的任何地方调用这些函数,您可以将它们归因于$scope变量,如下所示:

代码语言:javascript
复制
$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));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34472554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档