Я использую Ionic Framework для создания одностраничного приложения для мобильных устройств. У меня есть структура на основе вкладок для страницы профиля. Внутри "Домашнего" представления у меня есть ссылка "Редактировать профиль" после щелчка, она должна перейти к editprofile.html через ProfileManagementController.js. Когда я нажимаю на него, ничего не происходит, и в консоли также не отображаются ошибки. Обновляется только адрес в адресной строке.
Вот код маршрута в app.js:
.state('editProfile', {
url: '/editProfile',
views: {
'tab-editprofile': {
templateUrl: 'templates/profile/editprofile.html',
controller: 'ProfileManagementController'
}
}
})
Здесь это привязка к профилю ProfileManagementController.js, относящаяся к этой функции:
$scope.goToEditProfile = function(path)
{
$state.go(path);
}
Это форма HTMl для представления вкладки "Главная" (tab-home.html), в которой существует кнопка для перехода к редактированию профиля:
<div>
Name: {{tempUserObject.name}} <br/>
Friends: {{tempUserObject.totalFriends}}<br/>
Mobile: {{tempUserObject.mobile}}<br/>
Username: {{tempUserObject.username}} <br/>
<br/>
<button ng-click="goToEditProfile('editProfile')" class="button">Edit Profile</button>
</div>
Это URL-адрес изначально, когда я впервые попал на tab-home.html и после нажатия кнопки, которая не работает:
До: http://127.0.0.1:49259/index.html#/tab/home После: http://127.0.0.1:49259/index.html#/editProfile
Пожалуйста, помогите мне разобраться, что происходит с этой ссылкой. Я использовал $ state.go раньше в других местах, и он работает хорошо.
Обновление: добавлен editprofile.html.
<ion-view hide-nav-bar="false" title="Edit Profile">
<ion-content padding="'true'" class="has-header">
<div class="spacer" style="width: 300px; height: 87px;"></div>
<div class="button-bar"></div>
<h2>Edit Profile</h2>
</ion-content>
</ion-view>
используйте это вместо изменения состояния.
$location.path('/editProfile');
Не забудьте ввести $ location в функцию контроллера.
Поэтому я исправил вышеупомянутые проблемы с изменением маршрута в app.js следующим образом:
.state('editprofile', {
url: '/editprofile',
templateUrl: 'templates/profile/editprofile.html',
controller: 'ProfileManagementController'
})
У вас есть состояние с именем "путь", определенное в вашем приложении app.js? Если не создать состояние с именем "путь" с шаблоном и контроллером, как и состояние "editprofile"
ng-click="goToEditProfile('^.editProfile')"