我需要使用AngularJS从我的数据库中呈现所有帖子。我需要为用户可见的每个帖子提供编辑功能。目前,我通过使用'编辑帖子'指示。这是链接功能。
link: function ($scope, element, attrs) {
element.bind('click', function () {
var divId = $scope.$parent.post.meta.id + "Data";
var html = $compile("<div class='editTextAreaDiv' id='" + divId + "'>" +
"<textarea class='editTextArea' id='editBox' rows='3' ng-model='editedPostText' name='editedPostText'>" + $scope.$parent.post.meta.data + "</textarea><br />" +
"<span class='pull-right'>" +
"<input class='btn' type='button' value='Save' ng-click='saveEditedPost(\"" + divId + "\")'/>" +
"<input class='btn' type='button' value='Cancel' ng-click='cancelEdit(\"" + divId + "\")'/>" +
"</span>" +
"</div>")($scope);
$("#" + divId).html(html);
});
}
我通过动态添加textarea和2个按钮来操作DOM。
我的问题是这种动态操作DOM元素的方法在Angular世界中是否更可取。或者我应该采取其他方法(例如使用ng-show / ng-hide指令来显示/隐藏textarea和2个按钮)。
注意:我不想使用ng-show / ng-hide,因为我不想为每个帖子引入额外的textarea和2个按钮。
请指导我。
答案 0 :(得分:1)
我认为你应该使用Directives。
将你的HTML置于javascript中是不好的,并打破了角度背后的想法,旨在将逻辑与视图分开,并保持你的对象丢失耦合。