3
Angular將數據切換到「編輯模式」中<label>
被變形爲<input type='text'>
的正確方法是什麼?我希望在運行時創建和銷燬DOM元素,而不是先將所有輸入呈現爲隱藏(在切換到編輯模式時顯示它們,然後隱藏標籤)。變形標籤到輸入
Angular將數據切換到「編輯模式」中<label>
被變形爲<input type='text'>
的正確方法是什麼?我希望在運行時創建和銷燬DOM元素,而不是先將所有輸入呈現爲隱藏(在切換到編輯模式時顯示它們,然後隱藏標籤)。變形標籤到輸入
沿着this jsfiddle行的東西應該爲你工作。它仍然隱藏/顯示,但輸入不需要在DOM前面。可能有一百萬種替代方法來處理這個問題,但我認爲這至少會演示如何將功能引入指令。
HTML:
<label inline-edit>Edit me</label>
指令:
'use strict';
var app = angular.module('myApp', []);
app.directive('inlineEdit', function() {
return{
restrict: 'A',
transclude: true,
template: '<label class="editing" data-ng-transclude></label>',
controller: ['$scope','$element','$transclude',function($scope, $element, $transclude) {
$transclude(function(clone) {
$scope.transcluded_content = clone[0].textContent;
});
$element.bind('click', function(){
$element.hide().after('<input type="text" value="'+$scope.transcluded_content+'" />');
$element.next().focus().blur(function(){
$scope.transcluded_content = $element.next().val();
$element.html($scope.transcluded_content);
$element.next().hide();
$element.show();
});
});
}]
};
});
你可以用'input's並與他們的'NG-disabled'性能發揮,也爲他們的風格作爲標籤,而 「未編輯」模式 – Cherniv
[contenteditable]怎麼樣(http://html5demos.com/contenteditable)[指令](http://jsfiddle.net/api/post/library/pure/)? – madhead
你可以看一下'ng-if',它是angular 1.1.5的一部分 – Chandermani