ExpressJS/AngularJS: преобразование объекта JSON в строку


Я борюсь с чем-то, что может быть очень легко, но часы поисков на Stackoverlow не помогли.

Я использую сэра Тревора с MEANJS. Sir Trevor применяет себя к полю textarea и сохраняет его содержимое в виде строки JSON. Сэр Тревор сохраняет его содержимое в поле Content, которое задается как Тип Object в схеме Мангуста.

Создание прекрасно работает, и все экономит, как и ожидалось.

Однако при редактировании данные не изменяются. подходите правильно. Текстовое поле назначается data-ng-model="article.content" [поле 'content' из модели], но отображается как [object Object], поэтому, когда сэр Тревор пытается разобрать значение, оно выдает ошибку.

Я пытался использовать директиву с $formatters, чтобы изменить значение:

    <textarea data-ng-model="article.content" id="content" 
class="form-control st-instance" placeholder="Content" stRaw>
</textarea>

...а вот директива:

articleApp.directive('stRaw', function(){
return {
    restrict: 'A',
    require: 'ngModel',
    link: function(scope, element, attr, ngModel) {

        function stringIt(val) {
            return JSON.stringify(val);
        }

        ngModel.$formatters.push(stringIt);

    }
};

});

Но похоже, что директива никогда не срабатывает [я пробовал console.log в функции link и ничего не видел].

Я смог заставить его работать. fine before, изменяя тип схемы String , а затем используя stringify снова и снова в коде. Это казалось небрежным, создало ненужное раздувание, а также создало проблемы при попытке повторить на странице фактического просмотра [это было видно как String - не мог понять, как анализировать].

Я предполагаю, что мне нужно каким-то образом поймать атрибут article.content, прежде чем он будет отрисован, и изменить значение на строку. Это правильное направление?

1 2

1 ответ:

В вашем html есть опечатка, stRaw должно быть st-raw.

<textarea data-ng-model="article.content" id="content" class="form-control st-instance" placeholder="Content" st-raw></textarea>