, 당신이 VAR MyApp를 참고하시기 바랍니다 여기 http://css-tricks.com/snippets/javascript/saving-contenteditable-content-changes-as-json-with-ajax/http://jsfiddle.net/bonamico/cAHz7/
var myApp = angular.module('myApp', []);
에 설명 된 기술을 통합하여 바이올린의 수정 된 버전을 볼 수 = 실종, 그래서 다음과 같은 선언은하지 않았다되었다 실행
myApp.directive('contenteditable', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
// view -> model
elm.bind('blur', function() {
scope.$apply(function() {
ctrl.$setViewValue(elm.html());
});
});
// model -> view
ctrl.render = function(value) {
elm.html(value);
};
// load init value from DOM
ctrl.$setViewValue(elm.html());
elm.bind('keydown', function(event) {
console.log("keydown " + event.which);
var esc = event.which == 27,
el = event.target;
if (esc) {
console.log("esc");
ctrl.$setViewValue(elm.html());
el.blur();
event.preventDefault();
}
});
}
};
});
이 두 번째 질문의 경우도 http://api.jquery.com/keydown/
참조, 나는 코드 모듈을 만들고 유지 보수가있을 줄의 코드 numer에를 최소화하는 것은, 일반적으로 주요한 문제가 아닌 것을 제안합니다. 따라서 두 지시어를 작성하는 것이 좋습니다. 두 지시문이있는 경우 공통 부분에 대한 일반적인 javascript 함수를 작성하는 것이 좋습니다.
슈퍼, 감사합니다 카를로,이게 도움이됩니다. –
ctrl. $ setViewValue (elm.html()); 흐림을 트리거하고 있기 때문에 if (esc) 블록에서 필요하지 않습니다. 그리고 항상 흐림 처리기에서이를 수행하고 있습니다. – felixfbecker