Вам нужно реализовать только один из них. Возможно, вы пытаетесь получить доступ к какому-либо офисному методу, прежде чем правильно инициализировать Office
. Как правило, мне нравится иметь загрузочный экран со спиннером и перемещаться с него только после инициализации офиса.
Office.initialize = function(reason) {
window.location.hash = 'apploaded';
}
Нет - вам просто нужно инициализировать его один раз, если вы не обновляете сервер. Пока вы остаетесь в контексте своего приложения и не обновляете все приложение, а просто перемещаетесь между компонентами, все будет в порядке.
Это может произойти, особенно если под локальным подразумевать, что вы делаете это без контекста Office (то есть вы не в клиенте). Как я обычно решаю эту проблему, никогда не получаю прямой доступ к объекту Office, но всегда через службу, которая в случае пропуска объекта Office или его подпроцедур не вызывает сбоев. Поэтому вместо
// calling directly in some component
office.context.mailbox.item.to.getAsync
я бы сделал
OfficeService.GetAsync() {
if (Office && Office.context && Office.context.mailbox && ...) {
// call real method
}
else {
console.log('Detected local mode - without office context')
// do a fake test operation instead of the real thing.
}
}
Посмотрите в файл функции . Это дает вам кнопку на ленте, которую вы можете щелкнуть и выполнить функцию в основном. Он по-прежнему будет загружать HTML-код в невидимый браузер, но в этом случае вы не получите панель задач. Это должно поддерживаться только в подмножестве клиентов, но не во всех.
Есть несколько способов сделать это, вы можете просто указать URL-адрес вашей записи на панели задач в манифесте на этот URL-адрес компонента. Например,
и сопоставьте маршрутизацию /component
с вашим компонентом, поэтому, когда пользователь нажимает кнопку, он загружает только этот компонент. Вам все еще нужно инициализировать офисный контекст, иначе ваша функция не будет работать.
Это похоже на функцию вины, поддерживаемую в затмении с CVS, или с Подверсией (также в затмении)
Как Вы упоминаете, имя затмения той функции является Выставочными Аннотациями.
Для Visual Studio.NET с TFS.
Функция, "Аннотируют", и работает в значительной степени то же с Виной.
(лично я называю их инструментом охоты на ведьм команды).
Вы не упоминаете, какое управление исходным кодом Вы использование.
При использовании Подверсии можно смотреть на:
svn blame
:)
Вопрос довольно широк/открыт. Так или иначе это - хорошая идея, это может использоваться в качестве ссылки...
На работе я использую По необходимости с ее графическим интерфейсом. Представление Таймлапса позволяет видеть файл с для каждой строки, версии проверки, в которой это было изменено, и детали (кто отправил изменение, когда, и т.д.). И можно переместить ползунок для наблюдения предыдущих версий.
Существует версия командной строки: p4 annotate
.
Я начинаю использовать Подвижный, таким образом, я посмотрел на него. Сравнение систем управления версиями (хороший сайт, я просто обнаружил его), показывает, что команда hg annotate
.
Во многих системах управления версиями включая CVS, По необходимости, AccuRev, Подвижный, и Сервер Основы Команды, команда annotate
.
В Подверсии и RCS, команда blame
.
Например, с CVS:
cvs annotate foo.cc > foo_changes.txt
создаст foo_changes.txt
, который перечисляет число пересмотра и имя пользователя, связанное с новым изменением для каждой строки в текущей версии foo.cc
. Используя различные варианты даст Вам ту же информацию для предыдущих версий или отмеченных версий файла.
Мне был нужен этот вопрос, отвеченный также, но он не выскочил во мне сразу же при чтении ответов, уже отправленных, таким образом, надо надеяться, эта сводка должна помочь.
В AccuRev это еще более умно с аннотированием + "функция" ползунка версии, которая даст Вам опцию просмотреть аннотируемую версию файла в истории:
(Не только, кто изменился что на последнем пересмотре, но также и на всех изменениях),
(источник: accurev.com)