잘 작동하는 observablearray가 있지만 UI가 업데이트되지 않습니다. 나는이 유형의 문제를 겪고있는 많은 사람들을 읽었지 만 나는 그것을 보지 못하고있다. 녹아웃 ObservableArray가 업데이트되지 않음 Foreach
는 그래서 HTML은 <tbody data-bind="foreach: tweets">
<tr>
<td>
<span data-bind="visible: created_at" class="label label-success">Yup</span>
</td>
<td><p><b data-bind="text: screen_name"></b></p></td>
<td><p><b data-bind="text: id"></b></p></td>
<td><p data-bind="text: text"></p></td>
<td><p data-bind="text: created_at"></p></td>
</tr>
</tbody>
입니다 그리고 자바 스크립트 API를 호출하고 그것에서 배열을 구축하는 기능입니다.
<script type="text/javascript">
function TweetsViewModel() {
var self = this;
self.tasksURI = 'http://localhost:8000/api/v1/tweet/';
self.tweets = ko.observableArray();
self.ajax = function(uri, method, data) {
var request = {
url: uri,
type: method,
contentType: "application/json",
Accept: "application/json",
cache: false,
dataType: 'json',
data: JSON.stringify(data)
};
return $.ajax(request);
}
self.ajax(self.tasksURI, 'GET').done(function(data) {
for (var i = 0; i < data.objects.length; i++) {
var tweet = this;
tweet.created_at = ko.observable(data.objects[i].created_at)
tweet.text = ko.observable(data.objects[i].text)
tweet.id = ko.observable(data.objects[i].id)
tweet.screen_name = ko.observable(data.objects[i].twitteruser.screen_name)
self.tweets.push(tweet)
}
});
setTimeout(TweetsViewModel, 10000)
}
ko.applyBindings(new TweetsViewModel());
</script>
단지 테스트 목적으로 setTimeout을 사용하여 API 호출을 다시 실행하고 배열을 업데이트합니다. 배열은 제대로 업데이트되지만 UI는 업데이트되지 않습니다. 나는 나의 무지를 사과한다. (오랜 기간 동안 백엔드 개발자였으며, Javascript에서 10 년 만에 처음 실행되었다.) 도움이 많이 감사!
감사합니다. 나는 그것이 그와 비슷한 것일 수도 있다고 생각했지만 그것을 보지 못했습니다. 이것으로 바로 해결되었습니다. 실마리를 가지고 나를 때리는 데 정말로 감사드립니다. – user3314493