mirror of
https://github.com/zhigang1992/angular.js.git
synced 2026-04-22 02:45:10 +08:00
fix(ngBindHtml): throw error if interpolation is used in expression
Closes #8824
This commit is contained in:
@@ -186,14 +186,14 @@ var ngBindHtmlDirective = ['$sce', '$parse', '$compile', function($sce, $parse,
|
||||
return {
|
||||
restrict: 'A',
|
||||
compile: function ngBindHtmlCompile(tElement, tAttrs) {
|
||||
var ngBindHtmlGetter = $parse(tAttrs.ngBindHtml);
|
||||
var ngBindHtmlWatch = $parse(tAttrs.ngBindHtml, function getStringValue(value) {
|
||||
return (value || '').toString();
|
||||
});
|
||||
$compile.$$addBindingClass(tElement);
|
||||
|
||||
return function ngBindHtmlLink(scope, element, attr) {
|
||||
$compile.$$addBindingInfo(element, attr.ngBindHtml);
|
||||
var ngBindHtmlGetter = $parse(attr.ngBindHtml);
|
||||
var ngBindHtmlWatch = $parse(attr.ngBindHtml, function getStringValue(value) {
|
||||
return (value || '').toString();
|
||||
});
|
||||
|
||||
scope.$watch(ngBindHtmlWatch, function ngBindHtmlWatchAction() {
|
||||
// we re-evaluate the expr because we want a TrustedValueHolderType
|
||||
|
||||
@@ -122,6 +122,14 @@ describe('ngBind*', function() {
|
||||
|
||||
describe('ngBindHtml', function() {
|
||||
|
||||
it('should complain about accidental use of interpolation', inject(function($compile) {
|
||||
expect(function() {
|
||||
$compile('<div ng-bind-html="{{myHtml}}"></div>');
|
||||
}).toThrowMinErr('$parse', 'syntax', "Syntax Error: Token 'myHtml' is unexpected, " +
|
||||
"expecting [:] at column 3 of the expression [{{myHtml}}] starting at [myHtml}}].");
|
||||
}));
|
||||
|
||||
|
||||
describe('SCE disabled', function() {
|
||||
beforeEach(function() {
|
||||
module(function($sceProvider) { $sceProvider.enabled(false); });
|
||||
|
||||
Reference in New Issue
Block a user