我试图通过“搜索”功能从 youtube 获取视频源。我将数据推送到 observablearray 中,但 BINDING 总是失败。
我有这样的viewModel:
var videoFeeds = ko.observableArray();
var vm = {
videoFeeds: videoFeeds,
search: search
};
function search(value) {
value = value.toLowerCase().replace(/\s+/g, '+');
var options = {
url: 'https://gdata.youtube.com/feeds/api/videos/?q=' + value + '&max-results=10&alt=json&v=2',
method: 'GET',
dataType: 'jsonp'
};
$.ajax(options)
.done(function (data) {
videoFeeds([]);
for (var k in data.feed.entry)
{
var videoFeed = {
title : data.feed.entry[k].media$group.media$title.$t,
id : data.feed.entry[k].media$group.yt$videoid.$t,
author: data.feed.entry[k].author[0].name.$t
};
videoFeeds().push(videoFeed);
}
for (var k in videoFeeds())
{
console.log('title : ' + videoFeeds()[k].title);
}
})
.fail(function (err) {
console.log(err);
});
}
视图是这样的:
<ul data-bind="foreach: videoFeeds">
<li data-bind="text: title"></li>
</ul>
如您所见,我将每个提要的“标题”记录到控制台中,它工作正常,数组已更新。但我仍然看不到提要的“标题”。
谢谢你的帮助。