for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  

Список Форумов  :: Не фоксом единым
   :: Помощь сайту :: 

получить значение из контроллера
S-type
Автор

Сообщений: 2292
Дата: 02.07.18 20:17:08ОтветитьЦитировать
Нашли в программе косяк - у некоторых пользователей не убрана кнопка "Редактировать". Это самое "Редактировать" находится внутри гремучего JS-кода. Фронтендер в отпуске. Надо срочно сделать костыль - как то скрыть "Редактировать" с экрана, а фронтэндер придёт - переделает как надо. Вариант такой - добавить скрипт с таймером, который вызывает функцию, скрывающую лишний элемент с экрана.

Приложение asp MVC. В контроллере (C из MVC) ViewBag заполняется значениями, в том числе есть:

  
  ViewBag.isEditable=true; // конечно, не true, а выражение, но в данном случае - не важно.

В представлении (V из MVC) такой код:

  
  var isEditable = (bool)ViewBag.isEditable;

Костыль у меня получился такой. Добавляю в представление:

  
    
  <div style="display:none" id="isEditable" data-editable="@isEditable"></div>  
    
  <script>  
      jQuery(document).ready(function ($) {  
              $(document).ready(function () {  
                  startTimerRefresh();  
              });  
      });  
        
      var timerId;  
      var startTimerRefresh = function () {  
          var isEditable = document.getElementById("isEditable").getAttribute("data-editable");  
          if (isEditable=='False') {  
              timerId = setInterval(function () {  
                  var aTags = document.getElementsByTagName("a");  
                  for (var i = 0; i < aTags.length; i++) {  
                      if (aTags[i].textContent == 'Редактировать') {  
                          aTags[i].style.display = 'none';  
                      }  
                  }  
    
              }, 1000);  
          }  
      };  
  </script>

Вопрос - можно этот код как то упростить? Например, как то извлечь в JS из ViewBag.isEditable (без дополнительного div-а). Или, заменить:

  
  var isEditable = document.getElementById("isEditable").getAttribute("data-editable");

на что то более гуманное? Хотя бы получать bool, а не стринг? Опять таки, поиск перебором - то же не айс.

Можете что то посоветовать?
Ratings: 0 negative/0 positive

Re: получить значение из контроллера
Рома

Сообщений: 1077
Дата: 04.07.18 18:10:07ОтветитьЦитировать
S-type
var isEditable = document.getElementById("isEditable").getAttribute("data-editable")

на что то более гуманное? Хотя бы получать bool, а не стринг?

Т.к. есть jQuery, то можно

  
  var isEditable = ($("#isEditable").attr("data-editable") == 'False');

S-type
Опять таки, поиск перебором - то же не айс

  
  $("a:contains('Редактировать')").css("display", "none")
Ratings: 0 negative/0 positive

Re: получить значение из контроллера
S-type
Автор

Сообщений: 2292
Дата: 05.07.18 10:18:01ОтветитьЦитировать
Спасибо
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут писать в этом форуме.

On-line: 43 Божья_коровка sphinx  and Guests: 41


© 2000-2018 Fox Club 
Яндекс.Метрика