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()