В настоящее время я работаю над приложением, которое извлекает данные об изменении $ routeParams. Так вот как она начинается:Угловой вид не обновляется после извлечения данных из базы данных
function artistCtrl($scope, $http, $location, dataFactory, $routeParams){
$scope.artistName = $routeParams.artistname
$scope.$watch('artistName', function(newValue, oldValue){
$scope.artistInfo = dataFactory.getArtist(newValue)
})
$scope.artistInfo = {
artist_name: dataFactory.artistInfo.artist_name,
artist_genre: dataFactory.artistInfo.artist_genre,
artist_imageurl: dataFactory.artistInfo.artist_imageurl,
artist_bio: dataFactory.artistInfo.artist_bio
};
}
обратного вызова для $watch
здесь выполняется. dataFactory.getArtist
получает newValue
из моей базы данных, которая выполняется успешно. Это делается так:
dataFactory.js
dataFactory.getArtist = function(artist){
return dataFactory.checkDb(artist).then(function(dbData){
if(dbData.data != "No data"){
dataFactory.artistInfo = dbData.data[0]
}
return dbData.data[0]
})
}
dataFactory.artistInfo = "";
dataFactory
фабрика я создал в другом файле.
artistpage.html
<div class="container this">
<div class="row">
<div class="col-sm-6">
<div><h1>{{artistInfo.artist_name}}</h1></div>
<div rate-yo id='stars' rating="myRating" class="col-sm-4"></div>
<div id='reviews'>23 Reviews</div>
<div><h2>{{artistInfo.artist_genre}}</h2></div>
<div><p>{{artistInfo.artist_bio}}</p></div>
<div><button type="button" class="btn btn-primary" ng-click="somefunc()">Submit a Review</button></div>
</div>
<div class="col-sm-6 reviews">
<div><img class="artistpageimage" src={{artistInfo.artist_imageurl}}></div>
</div>
</div>
</div>
Я не понимаю, почему мой взгляд не обновляется. Я пытаюсь обновить $ scope.artistName, назначив возвращаемый dataFactory.getArtist(newValue)
, а также назначив новые данные dataFactory.artistInfo
. Я прочитал около $ apply, но мне сложно определить, как применить его в этом контексте. Может ли кто-нибудь помочь?