我已经制作了一个指令(内联编辑)并在编译函数中操作了 DOM,但是我怎样才能使我添加的其他指令起作用?我想我需要编译它,但是如何编译呢?在这里查看我的 jsfiddle:http: //jsfiddle.net/tidelipop/m4gbZ/ ng-click 不能正常工作,但奇怪的是,为什么 ng-bind 工作?如果您在开发工具中取消隐藏文本区域,您可以看到它确实有效。
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'
}
};
});