Angularjs 从指令引用ng模型父级

Angularjs 从指令引用ng模型父级,angularjs,coffeescript,pug,Angularjs,Coffeescript,Pug,因此,我有以下翡翠模板: div(ng-controller="TodoListController", ng-init="setTodos(...)") div(ng-repeat="todo in todos") span(contenteditable="true", ng-model="todo.description"){{ todo.description }} 我正在为contenteditable属性定义以下指令: TodoModule.di

因此,我有以下翡翠模板:

  div(ng-controller="TodoListController", ng-init="setTodos(...)")
      div(ng-repeat="todo in todos")
          span(contenteditable="true", ng-model="todo.description"){{ todo.description }}
我正在为
contenteditable
属性定义以下指令:

TodoModule.directive 'contenteditable', ->
  return {} =
    restrict : 'A'
    require: '?ngModel'
    link : (scope, elem, attrs, ngModel) ->
      read = ->
        ngModel.$setViewValue elem.html()
      elem.on 'blur', ->
        scope.$apply read
以下是TodoListController的相关部分:

TodoModule.controller 'TodoListController', ($scope, $http) ->
  $scope.update = (todo) ->
    $http.put "/todo/#{todo._id}.json", todo
      .success (data) ->
        if !data.todo
          alert JSON.stringify data

这里的问题是,我真的不知道如何从
contenteditable
链接函数中引用
todo
对象,以便在contenteditable的模糊事件中调用
scope.update(todo)
。作为家长,这是否可以从ngModel中获得?

以下是我的想法,我不完全相信这是最好的方法,所以我现在还不会回答

我已经向我的jade模板添加了一个
updateon blur
属性,该属性传递父级
scope.update(todo)
函数:

      span(contenteditable, update-on-blur="update(todo)", ng-model="todo.description"){{ todo.description }}
并在我的指令中添加了一个隔离作用域,然后在模糊触发器中调用了新函数:

TodoModule.directive 'contenteditable', ->
  return {} =
    restrict : 'A'
    require: '?ngModel',
    scope:
      updateOnBlur: '&'
    link : (scope, elem, attrs, ngModel) ->
      console.log scope
      read = ->
        ngModel.$setViewValue elem.html()

      elem.on 'blur', ->
        scope.$apply read
        scope.updateOnBlur()