Хорошо, вот сценарий. У меня есть частичный вид в приложении mvc, который отображается как содержимое окна всплывающего окна кендо. Теперь мне нужно создать переменную (которая есть массив), к которой я могу получить доступ из любого метода внутри этого частичного сценария просмотра, но она должна быть невидимой из этого всплывающего окна. Причина в том, что мне нужно хранить данные для этого конкретного всплывающего окна, и может быть несколько таких всплывающих окон. Как я могу это достичь?MVC, создающий глобальную переменную js для частичного просмотра
ответ
Когда вы объявляете окно, вы можете установить переменную, которая, как это:
var myWindow = $("#window");
myWindow[0].myVariable = [1,2,3];
Для чего это стоит, чтобы получить лучшие ответы, которые вы должны попытаться сделать свой вопрос, как родовое, насколько это возможно. Предполагая знание кендо, означает, что только те, кто знаком с Кендо, могут ответить (хотя бы легко), тогда как это действительно неспецифично для факта, что вы используете Kendo. Лучше сказать: «У меня есть модальное окно, которое отображает HTML, отображаемый на одной странице (т. Е. Не через iframe или что-то еще»).
В любом случае вы просто захотите использовать какой-либо массив или объект, чтобы удерживать все переменные для всплывающих окон. Вы абсолютно не должны полагаться на объект JavaScript window
, поскольку все, что хранится там, действительно глобально и может быть перезаписано или иным образом изменено любым количеством других скриптов, запущенных на странице. Вы должны создать пространство имен для вашего приложения, если вы еще не сделали этого, и хранить все что угодно и все, что в этом пространстве имен:
var MyAwesomeNamespace = MyAwesomeNamespace || {};
MyAwesomeNamespace.foo = "bar";
Имя не имеет значения; просто выберите что-то уникальное, что вряд ли будет использовано кем-либо еще в мире, например, именем вашей организации.
Как только у вас есть это, то, как я уже сказал, вы захотите использовать массив или объект. Который вы выбираете, зависит от того, как вы хотите справиться с этим. С помощью массива вам нужно будет выбрать значения через некоторый целочисленный индекс. Например, если ваши всплывающие окна отображаются через цикл for, вы можете назначить им атрибут id или data- *, который содержит этот индекс, а затем использовать его для выбора нужного элемента из массива.
Если что-то немного более случайный характер, чем это, вы, вероятно, просто хотите использовать объект и ключ от каких-либо свойств на всплывающем окне, как его идентификатор:
MyAwesomeNamespace.PopupVariables[popup.getAttribute(id)];
вы действительно хотите личную переменный для popup или вам просто нужна уникальная переменная для каждого всплывающего окна? – rajeemcariazo
@rajeemcariazo, уникальная переменная для каждого всплывающего окна. Извините, если я не был достаточно ясен, мой английский далек от совершенства – KorsaR