2015-03-14 3 views
4

Я использую ng-bind-html для рендеринга санированного комментария HTML. Это мой html:ng-bind-html working, но ошибка бросания

<span class="commentBody" ng-bind-html="comment.Text"></span> 

Он работает - HTML отображается и отображается правильно. Но я получаю следующее сообщение об ошибке в консоли Javascript:

TypeError: Object doesn't support property or method 'push' 
    at $$addBindingInfo (http://localhost:2239/Scripts/angular.js:6869:9) 
    at ngBindHtmlLink (http://localhost:2239/Scripts/angular.js:20460:9) 
    at invokeLinkFn (http://localhost:2239/Scripts/angular.js:8219:9) 
    at nodeLinkFn (http://localhost:2239/Scripts/angular.js:7729:11) 
    at compositeLinkFn (http://localhost:2239/Scripts/angular.js:7078:13) 
    at compositeLinkFn (http://localhost:2239/Scripts/angular.js:7081:13) 
    at publicLinkFn (http://localhost:2239/Scripts/angular.js:6957:30) 
    at boundTranscludeFn (http://localhost:2239/Scripts/angular.js:7096:9) 
    at controllersBoundTransclude (http://localhost:2239/Scripts/angular.js:7756:11) 
    at ngRepeatAction (http://localhost:2239/Scripts/angular.js:24553:15) <span class="commentBody ng-binding" ng-bind-html="comment.Text"> 

Это код, который вызывает проблемы в angular.js:

var bindings = $element.data('$binding') || []; 

    if (isArray(binding)) { 
    bindings = bindings.concat(binding); 
    } else { 
    bindings.push(binding); 
    } 

Переменная bindings заканчивает тем, что строка comment.Text, поэтому его не поддерживает метод push, потому что это не массив.

Что я должен изменить, чтобы исправить это?

+0

что в $ element.data ('$ связывающим')? – jlowcs

+0

Я должен был быть более ясным - эта часть не является моим кодом, это часть угловых. Кажется, что это часть того, что происходит автоматически, когда я использую ng-bind-html. Я попытаюсь войти в $ element.data, чтобы узнать, я полагаю. – user1002973

+0

В Internet Explorer? – YOU

ответ

0

Вы правы .push будет работать только с массивом. Используя это, вы должны инициализировать переменную

var bindings = new Array(); 

вы можете также попытаться рассмотреть вопрос об использовании .pushStack =>http://api.jquery.com/pushstack/

+0

Я должен был быть более ясным - эта часть не является моим кодом, это часть угловых. Кажется, что это часть того, что автоматически происходит, когда я использую ng-bind-html – user1002973

+0

. Вы пытались добавить 'ngSanitize' к вам зависимостям модуля ---> var myApp = angular.module ('myApp', ['ngSanitize' ]); – mpalencia

+1

Да, ngSanitize находится в моих зависимостях. И это работает! Это переделка html (и избавление от потенциально вредоносного контента). Единственная проблема, с которой я столкнулся, - это сообщение об ошибке в консоли JS. Веб-страница функционирует полностью нормально. – user1002973

Смежные вопросы