Существует мой HTML-код:
<div ng-if="user.type == 'none'"> <button ng-click="selectUserType('user')"></button> </div>
<div ng-if="user.type !== 'none'"> //here goes input etc </div>
Существует мой сценарий:
$scope.user = {type: 'none'};
$scope.selectUserType = function(type) {
$location.path('/signup/'+type);
$scope.user.type = type;
};
Проблема заключается в том, что после первого щелчка в консоли я вижу, что $ scope.user получает «пользовательское» значение, затем прямо в момент обращается к «none», но местоположение меняет то, что мне нужно. $ scope.user снова получает значение после второго щелчка и скрывает полезный блок и показывает, что нужно.
Как я могу это сделать, по-другому? Мне нужно сделать все те, одним щелчком мыши
это работает, когда я удалить $location.path('/signup/'+type)
, но мне еще нужно изменить location.path когда user.type изменяется
Извините за мой английский, если вы видите некоторые грамматики ошибки или что-то еще. это не мой родной, спасибо.
ответ
на пути, Дмитрий Лоскутов ответил мне, я использовал это: просто проверить location.path в начале контроллера, затем установите тип:
var locPath = $location.path();
if (locPath == '/signup') {
$scope.user = {type: 'none'};
} else if (locPath == '/signup/user') {
$scope.user = {type: 'user'};
}
$scope.selectUserType = function(type) {
$location.path('/signup/' + type);
$scope.user.type = type;
};
надежду, что помогает кому-то, потому что я» вы потеряли около 4 часов, чтобы получить это простое решение> _ <
Попробуйте этот код (это не самый лучший способ):
var $user = {type: 'none'}; // define OUTSIDE of controller(or link function)
код внутри контроллера (или ссылку функции)
$scope.user = $user;
$scope.selectUserType = function(type) {
$location.path('/signup/' + type);
$user.type = type;
$scope.user = angular.extend({}, $user);
};
Я предполагаю, что ваш контроллер INIT дважды в вашем случае, так попробуйте определить переменную $ user вне контроллера, например, в глобальной области (также вы можете попытаться определить ее в $ rootScope), поэтому, когда контроллер повторно инициализирует, он не изменяет переменную $ user.
, по-прежнему ничего не меняется :(спасибо – scDisorder
Пробовал ли вы пропустить '$ Location.path ('/ регистрация /' + тип);'? Может быть, он повторно инициализирует ваш контроллер (или функцию связи) и устанавливает '$ scope.user = {type: 'none'};' снова? –
Он работает, когда я удаляю '$ location.path ('/ signup /' + type);' обычно, но мне все равно нужно изменить location.path – scDisorder
- 1. Ссылка только после второго щелчка
- 2. оповещения после второго щелчка
- 3. on («щелчок») только стрельба после второго щелчка
- 4. CodeMirror, отправляемый только после второго щелчка
- 5. Таймер останавливается только после второго щелчка?
- 6. HTML-кнопка отменяется только после второго щелчка
- 7. OnClick работает только после второго щелчка
- 8. PHP работает только после второго щелчка
- 9. on ('click' ....) только срабатывает после второго щелчка
- 10. Fb.ui появляется только после второго щелчка
- 11. JavaScript onClick работает только после второго щелчка
- 12. Jquery Сортировка только пожаров после второго щелчка
- 13. scrollTo после фокуса/OnClick событие работает только после второго щелчка
- 14. Кнопка работает только после второго щелчка после перезагрузки
- 15. Следуйте ссылке после второго щелчка
- 16. Функциональная работа после второго щелчка
- 17. Функция работает после второго щелчка
- 18. Таблица HSQL изменяется только после второго запуска прогама
- 19. Выбор SelectOneMenu, заполненного перечислением только после второго щелчка
- 20. Событие jQuery click работает только после второго щелчка
- 21. jQuery scrollTo работает корректно только после второго щелчка
- 22. Диалоговое окно оповещения, отображаемое только после второго щелчка
- 23. JQuery .on («click») только стрельба после второго щелчка
- 24. Вид таблицы didSelectRowAtIndexPath работает только после выбора второго щелчка
- 25. ListView расширить анимации для элементов работает только после второго щелчка
- 26. onfocus пожары после второго времени щелчка
- 27. Кнопки работают только со второго щелчка
- 28. Значение переменной не изменяется после второго цикла
- 29. Включить/отключить поле ввода после второго щелчка
- 30. Нокаут нажмите связывающие пожары после второго щелчка
Вы уверены, что вам нужно '' тег:
Вы пытались установить '$ scope.user.type' перед изменением' $ location.path'? Также тег кнопки не закрывается. Незнакомые вещи вызвали постороннее поведение;) '
Извините, были ошибки, теперь это правильно выглядит – scDisorder