Я сделал директиву (inline-edit) и манипулировал DOM в функции компиляции, но как я могу сделать другие директивы, которые я добавил для работы? Наверное, мне нужно скомпилировать его, но как? См. Мой jsfiddle здесь: http://jsfiddle.net/tidelipop/m4gbZ/ ng-click не работает, как есть, но странно, почему работает ng-bind? Вы можете видеть, что он работает, если вы отображаете текстовое поле в инструментах dev.Манипулирование DOM в директиве, что теперь?
angular.module('MyApp', [], function($compileProvider){
$compileProvider.directive("inlineEdit", function($compile, $q){
return {
restrict: "A",
scope: true,
controller: function($scope){
$scope.editMode = true;
$scope.save = function(){
console.log("Saving...");
};
},
compile: function(tElement, tAttrs){
tElement
.attr("ng-hide", "editMode")
.attr("ng-click", "editMode=!editMode")
.after("<textarea ng-show=\"editMode\" ng-model=\""+tAttrs.ngBind+"\"></textarea><button ng-click=\"save()\">Save</button>");
//var scopeResolver = $q.defer();
//$compile(tElement.parent().contents())(scopeResolver.promise);
return function(scope, element, attrs, controller){
//scopeResolver.resolve(scope);
//$compile(element.parent().contents())(scope);
console.log(element.parent().contents());
};
}
};
});
})
.controller("UserAdminCtrl", function($scope){
$scope.data_copy = {
user: {
user_id: 'sevaxahe',
comment: 'test'
}
};
});
Think Я решил его! Это правильный способ сделать это? http://jsfiddle.net/tidelipop/uEj7c/ – tidelipop
http://jsfiddle.net/m4gbZ/74/ рабочее решение. Много изменений, и будьте осторожны, я использовал угловой 1.2. Я даже не знаю, поможет ли это вам, я вернусь с более подробной информацией, если не будет найдено другого решения (нет времени для улучшения моего ответа, извините: /) – Utopik
Спасибо! Теперь у нас есть три рабочих решения, я посмотрю на них. – tidelipop