问题是最初发生绑定时您的 Info 属性未定义。我更新为向您的 VM 添加一个方法,该方法检查是否填充了 Info,然后返回 Title。这是JSFiddle上的更新示例。更新后的绑定代码是这样的,调用VM函数:
<div data-bind="text: GetTitle()"></div>
更新后的 VM 如下所示,注意最后添加的功能:
function DareDetailViewModel() {
var self = this;
self.Info = ko.observable();
var flickerAPI = "http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?";
$.getJSON(flickerAPI, {
format: "json"
})
.done(function (data)
{
self.Info(new MapInfo(data));
console.log(data);
});
self.GetTitle = function() {
if(self.Info())
return self.Info().Title();
};
};
另一种选择是使用也具有初始标题的对象来初始化 Info 属性。但这似乎是更长的方法,所以我没有。:)