将参数传递给指令的父控制器功能

时间:2015-11-10 20:01:55

标签: angularjs angularjs-directive

我已经阅读了几个问题,我仍然无法弄清楚如何解决这个问题。简单地说,我有一个自定义指令:

.directive('todoList', function() {
        return {
            restrict: 'AE',
            scope: {
                todos: '=todos',
                deleteTodo: '&'
            },
            replace: true,
            templateUrl: '/public/partials/todoList.html'           
        }
    })

我的自定义指令如下所示:

<todo-list todos="todo.todos" delete-todo="todo.deleteTodo(id)"></todo-list>

在我的控制器中,它看起来像这样:

function deleteTodo(id) {
        console.log(id) // undefined                
        todoService.deleteTodo(id)
        .then(function(todo) {
            todoService.getTodos();
        }, function(err, status) {
            todoService.getTodos();
        })
    }

// using controllerAs
this.deleteTodo = deleteTodo;

我的指令的HTML是这样的:

<div ng-repeat="todo in todos track by $index">
    <span class="item">{{todo.name}}<button type="button" class="btn btn-danger delete" ng-click="deleteTodo(todo._id)">Delete Item</button></span>
</div>

问题在于todo._id作为参数在传递给undefined中的控制器函数时显示为console.log。但是在检查时,{{todo._id}}会正确插值,因此值确实存在。我知道我错过了什么,但我无法弄清楚是什么。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

道歉,我刚刚解决了。

在我的ng-click中,我改变了它:

ng-click="deleteTodo(todo._id)"

对此:

ng-click="deleteTodo({id: todo._id})"