我有一个textarea,默认情况下使用ng-show="somecondition"
隐藏我在代码上更改somecondition
,文本区域变为visibe。
绑定到textarea的文本中包含<br />
个标记。
我想在textarea可见后立即删除<br />
。
我不知道在哪里绑定该函数以删除br。
如果我创建了一个指令,那么在textarea上就没有像load
这样的事件。
任何人都有想法?
注意:由于变量绑定到textarea也绑定到其他元素,我无法过滤app启动中的<br />
。
答案 0 :(得分:0)
假设您不想制作自定义指令,并且绑定到ngModel modelValue / viewValue挂钩,则可以按照注释中的建议在控制器中使用简单的监视。由于你没有发布你的任何JS,我会做出一些假设,但你应该得到要点。注意:我不喜欢$ scope变量(参见Dot Rule),所以我改用控制器赋值。
app.controller("someController", function($scope)
{
var self = this;
this.somecondition = false;
this.bound_data = "testing<br />123";
$scope.$watch(function() { return self.somecondition; }, function(newVal, oldVal)
{
if (newVal)
{
self.bound_data = self.bound_data.replace("<br />", "\n");
}
else
{
self.bound_data = self.bound_data.replace("\n", "<br />");
}
}
});
我个人的偏好是使用NewLines保存数据并编写一个自定义过滤器,在textarea外部呈现时将NewLines转换为<br />
标记,但如果您已经处理了存储数据其中包含<br />
个标签,使用带有ngModel的Watch或自定义指令即可。请注意,如果您必须使用<br />
标记保存此数据,那么您在保存时也希望执行相同的转换 - 最简单的方法是将somecondition
变量设置回默认设置,以便Watch中的代码自动为您进行转换 - 例如:
self.save = function()
{
// fires the watch transform
self.somecondition = false;
// now save your data with the <br /> tags in-tact
}