前言
大家都知道,angualrjs被认为是安全的,和插补指令将滤波器对应的字符串来避免HTML的攻击。但在有些时候,我们需要渲染HTML,例如,实施分层下拉框
代码如下:
VaR的应用= angular.module(的应用
App.controller(
控制器
无功testlist = { {编号:0,文字:},国家{编号:1,文字:北京},{编号:20,文字:} {编号:3,上海
$范围=值20;
testlist = testlist美元范围;
});
你可以看到,
空间的直接呈现。一个简单粗暴的
解决办法是
修改AngularJS的源代码,不再过滤HTML,在updateoptions AngularJS源代码
搜索功能,直接更换相应的
脚本。
正如您所看到的,空间已经
正确地呈现,虽然这个
方法很简单,但是更改会
影响所有下拉框控件,可能存在HTML攻击,一个令人满意的方法是使用NG绑定HTML来渲染HTML,此时下拉框绑定数据也需要更改,相应的代码如下所示:
VaR的应用= angular.module(的应用
App.controller(控制器
无功testlist = { {编号:0,文字:},国家{编号:1,文字:北京},{编号:20,文字:} {编号:3,上海
对于(var i = 0;i < testlist.length;i++)
{
我testlist { }。
文本= sce.trustashtml美元(testlist {我}文本);
}
美元范围。值= 20'; / /注意,这里必须是一个字符串
类型,否则无法获得选定的值
testlist = testlist美元范围;
});
它不是用于消费的
性能数据量,下拉框,完全可以满足需要,但如果数据稍大,
浏览器会出现明显的卡顿现象,这个时候你可以编写实现下拉框的指令,代码如下:
{ { } }
VaR的应用= angular.module(的应用
App.controller(控制器
无功testlist = { {编号:0,文字:},国家{编号:1,文字:北京},{编号:20,文字:} {编号:3,上海
$范围=值20;
testlist = testlist美元范围;
});
App.directive (dropDownList
返回{
限制:e,
经营范围:{
dlist:=,
dselectvalue:=
},
链接:功能(范围、元素、
属性){
变量=
文档;
VaR值=属性{价值}; / /值对应的
选项 var text =属性{文本};
选择以价值= scope.dselectvalue VaR;
element.on(变化
VaR SelectedIndex = this.selectedindex;
范围($)(
函数(){())
dselectvalue = SelectedIndex范围;
});
})
对于(var i = 0;i < scope.dlist.length;i++)
{
期权= d.createelement(选项);
期权价值=范围。dlist {我} {价值};
选择。innerHTML =范围。dlist {我} {文字};
如果(选择以价值= =期权价值。)
{
option.setattribute(选择
}
element.append(选项);
}
},
模板,
替换:真
};
});
这样可以更完美地达到相应的功能,是更好的选择。
总结
以上就是本文的全部内容。希望本文的内容能给大家的
学习或
工作带来一定的帮助。如果有任何疑问,您可以留言交流,谢谢您的
支持。