Так что я был частично прав в моем последнем редактировании, отсюда и этот ответ; jQuery имел какое-то отношение к моей проблеме (через использование обещаний для получения данных), однако это также было связано с тем, как работает ui-router:
По мере загрузки содержимого страницы, ui-router будет управлять первой загрузкой (и последующими перезагрузками) с данными, предоставленными запросом GET.
Поскольку это обещание, не гарантируется (особенно когда вы увеличиваете свою БД), что данные будут там вовремя отображать страницу.
Чтобы избежать этого, используйте свойство resol как часть ngRoute. Это свойство позволяет загружать все необходимые данные перед отображением DOM.
Если вы хотите узнать больше о, перейдите по ссылке ниже:
https://medium.com/opinionated-angularjs/advanced-routing-and-resolves-a2fcbf874a1c
Мой код ниже:
App.js
'use strict';
angular
.module('knoweeApp', ['ui.router'])
.config(['$stateProvider','$urlRouterProvider',function($stateProvider,$urlRouterProvider) {
$stateProvider
.state('home', {
url:'/',
templateUrl: 'views/user.html',
controller: 'UserCtrl as user',
resolve: {
user: function(userFinder) {
return userFinder.getUsers();
}
}
})
.state('teacher', {
url:'/teacher/:name',
templateUrl: 'views/teacher.html',
controller: 'TeacherCtrl as teacher'
});
$urlRouterProvider.otherwise('/');
}]);
Сервис: userFinder
'use strict';
/**
* @ngdoc service
* @name knoweeApp.userFinder
* @description
* # userFinder
* Service in the knoweeApp.
*/
angular.module('knoweeApp')
.service('userFinder', function () {
// AngularJS will instantiate a singleton by calling "new" on this function
this.getUsers = function (){
return $.get('users.json');
};
});
Контроллер: UserCtrl
'use strict';
angular.module('knoweeApp')
.controller('UserCtrl', function (userFinder,user) {
this.teachers = user;
this.increment = function (item) {
item.rating += 1;
};
this.decrement = function (item) {
item.rating -= 1;
};
});
Надеюсь, это поможет, свяжитесь со мной, если сомневаетесь