Редактор TinyMCE не инициализирует текстовую область в ng-repeat angularJS 1.6 [duplicate]

В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.

При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.

Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».

Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this. Возьмем этот пример:

public class Some {
    private int id;
    public int getId(){
        return this.id;
    }
    public setId( int newId ) {
        this.id = newId;
    }
}

И в другом месте вашего кода:

Some reference = new Some();    // Point to a new object of type Some()
Some otherReference = null;     // Initiallly this points to NULL

reference.setId( 1 );           // Execute setId method, now private var id is 1

System.out.println( reference.getId() ); // Prints 1 to the console

otherReference = reference      // Now they both point to the only object.

reference = null;               // "reference" now point to null.

// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );

// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...

Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference и otherReference оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.

15
задан Abhishek Prakash 22 February 2014 в 22:46
поделиться

2 ответа

Предполагая, что ваше угловое приложение работает, и это всего лишь вопрос настройки редактора, вы можете настроить редактор с теми же параметрами, которые описаны для негласного базового TinyMce здесь: http: // www.tinymce.com/wiki.php/configuration

Если вы нажмете на определенную опцию, вы увидите, как вы можете настроить неагрессивный tinymce так:

tinymce.init({
    resize: false
});

Итак, чтобы сделать эквивалентную настройку в угловом с ui-tinymce, вместо tinymce.init (), вы должны установить параметры внутри переменной области scope scope.tinymceOptions. Таким образом, пример настройки ui-tinymce, чтобы не позволить пользователю изменять размер, иметь ширину / высоту 400/300, разрешить печать и выбор цвета / фонового рисунка:

myAppModule.controller('MyController', function($scope) {
    $scope.tinymceOptions = {
        resize: false,
        width: 400,  // I *think* its a number and not '400' string
        height: 300,
        plugins: 'print textcolor',
        toolbar: "undo redo styleselect bold italic print forecolor backcolor"

    };
});

И ваше представление может выглядеть примерно так (обратите внимание на tinymceOptions):

  <textarea ui-tinymce="tinymceOptions" ng-model="tinymceModel"></textarea>

ui-tinymce должен поставляться с несколькими встроенными плагинами, которые вы можете найти здесь: http: // www.tinymce.com/wiki.php/Plugins

Полный список параметров панели инструментов см. в разделе: http://www.tinymce.com/wiki.php/Controls

Из того, что я помню, вы не можете после изменения факта tinymceOptions. Под этим я подразумеваю, что после загрузки редактора, если вы хотите позже изменить некоторые из параметров $ scope.tinymceOptions, эти изменения не будут автоматически обновляться в редакторе, потому что я считаю, что код ui-tinymce передает параметры tinymce.init () только один раз при загрузке.

Вы также можете делать такие вещи, как вручную задавать содержимое редактора, используя простые javascript-крючки tinyMce, такие как:

tinyMCE.activeEditor.setContent('<h1>hello world</h1><p>this is my story.  the end.</p>');

. Аналогичным образом вы можете использовать getContent (): http://www.tinymce.com/wiki.php/API3:method.tinymce.Editor.getContent Но я считаю, что вы также можете получить доступ к содержимому редактора с помощью переменной $ scope.tinymceModel в этом примере. (в случае использования, если у вас есть ng-клик на кнопке, чтобы сохранить содержимое редактора, то как вы получаете содержимое редактора ...)

Но более угловатым способом было бы сделать все через ng-model и переменные области видимости вместо того, чтобы полагаться на исходный jin-файл jin-файла tinymce.

Надеюсь, что это помогает. Таким образом, ui-tinymce - очень тонкая обертка вокруг обычного TinyMce. Итак, все, что вы можете сделать с регулярным тинимом, вы можете по большей части делать с угловой версией. Я думаю, именно поэтому для настройки ui-tinymce не так много документов, но этот факт не совсем понятен новым новичкам.

28
ответ дан jCuga 19 August 2018 в 15:23
поделиться
  • 1
    Благодаря jCuga, это очень помогло. – Abhishek Prakash 23 February 2014 в 21:07
  • 2
    Что делать, если мне нужно удалить редактор TinyMCE? Возможно ли это сделать от контроллера, так или иначе? – ilter 10 April 2015 в 15:11
  • 3
    Это не было в документах - & gt; щ-TinyMCE = & Quot; tinymceOptions & Quot ;. Мне потребовалось некоторое время, чтобы понять, почему настройки, которые я установил, не отражали редактор. Огромное спасибо. – Strategist 4 December 2015 в 00:34
  • 4
    Для параметра height вы не можете включить плагин autoresize. Я немного боролся с этим. – aoakeson 20 September 2016 в 19:00
  • 5
    @jCuga У меня возникают проблемы с курсором, когда я начинаю печатать, он помещает курсор в первый символ в первой строке. Как я понимаю, это происходит из-за $ scope.apply для двусторонней привязки, но не может его решить .. do u find любые альтернативы для этого – sandeep_kosta 10 April 2017 в 08:48

Несмотря на то, что jCuga предоставил очень полезное объяснение, я все еще не мог настроить настроенную настройку. Редактор TinyMCE загрузится, но с настройками по умолчанию. Похоже, что у других есть аналогичная проблема, которая регистрируется как вопрос № 158 для проекта директивы ui-tinymce. Основная проблема для меня, похоже, в том, что, поскольку я определил параметры установки в угловом контроллере, как предлагает документация, переменная tinymceOptions по умолчанию никогда не перезаписывается, потому что мой контроллер никогда не загружается. Я решил это просто ссылкой на контроллер как таковой:

<textarea ui-tinymce="tinymceOptions" ng-controller="RichTextCtrl"></textarea>

Как только я добавил ссылку на ng-controller, мои пользовательские настройки были использованы вместо настроек по умолчанию.

1
ответ дан Nick A. Watts 19 August 2018 в 15:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: