Определить флаг enum несовместимый [дубликат]

В современных браузерах и HTML5 существует метод, называемый pushState в окне history . Это изменит URL-адрес и перенесет его в историю без загрузки страницы.

Вы можете использовать ее следующим образом: она будет принимать 3 параметра: 1) объект состояния 2) название и URL-адрес):

  window.history.pushState ({page: "another"}, "another page", "example.html");   

Это изменит URL-адрес, но не перезагрузит страницу, также не проверяет, существует ли страница, поэтому, если у вас есть код javascript, который будет реагировать на URL-адрес, вы можете работать с

Также есть history.replaceState () , который делает точно то же самое, за исключением того, что он изменит текущую историю вместо создания новой!

Также вы можете создать функцию для проверки существования history.pushState, а затем продолжить с остальными:

  function goTo (страница, заголовок, URL) {if ("  undefined "! == typeof history.pushState) {history.pushState ({page: page}, title, url);  } else {window.location.assign (url);  }} goTo («другая страница», «пример», «example.html»);   

Также вы можете изменить # для браузеров & lt; HTML5 , которые не будут перезагружать страницу, таким образом Угловой использовать SPA в соответствии с hashtag ...

Изменение # довольно легко, делая:

  window.location.hash = "example";   

, и вы можете обнаружить его следующим образом:

  window.onhashchange = function () {console.log ("# changed", window.location.  хэш);  }  
0
задан HimBromBeere 28 August 2014 в 14:01
поделиться

2 ответа

Нет, это невозможно. Также невозможно ограничить значения как перечисленные элементы. Например, в C # допускается следующее:

CopyFlags flags = (CopyFlags)358643;

Вы должны явно выполнить свою проверку внутри методов, которые включают параметр CopyFlags.

4
ответ дан Sam Harwell 15 August 2018 в 22:34
поделиться
  • 1
    Поэтому я должен ввести FieldsOnly со значением 8, а затем проверить свойства & amp; Поля, верно? – HimBromBeere 28 August 2014 в 14:15

Нет, это невозможно в контексте перечисления; вместо этого вам придется проверить его:

public void DoSomething(CopyFlag flag)
{
   if (flag.HasFlag(CopyFlags.PropertiesOnly) && flag.HasFlag(CopyFlags.FieldsOnly))
      throw new ArgumentException();

}
1
ответ дан Brian Mains 15 August 2018 в 22:34
поделиться
  • 1
    Печально это может работать только .NET 4.0 вверх :( – HimBromBeere 28 August 2014 в 14:10
  • 2
    Затем используйте (flag & CopyFlags.PropertiesOnly) == CopyFlags.PropertiesOnly or (flag & CopyFlags.FieldOnly) == CopyFlags.FieldOnly. Этот метод был ярлыком для этого. – Brian Mains 28 August 2014 в 15:06
Другие вопросы по тегам:

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