2014-01-18 29 views
-1

你好,我有以下代码:淘汰赛与结合导致“xxx是不是一个函数”

<ul data-bind="with : weather()" > 
    <li>Aktuelles Wetter (15:48) 
    <ul> 
     <li> 
    <span style="float:right;" data-bind="text : weather()" onclick="alert(weatherViewModel.weather().wind.speed);"> km/h </span> 

我总是收到错误:Typerror:天气是不是一个函数。 问题是,当我离开data-bind="with : weather"时,我没有遇到那个问题。 我虽然需要绑定,因为我必须访问如onclick属性中所示的属性。 任何人都可以帮忙吗?

UPDATE:视图模型的

var weatherViewModel = { 

weather : ko.observable(null), 

forecast: ko.observable(null) 
} 

关键部分。可观察到的是使用剑术的UI经由Ajax的请求设定如下:

change: function(e) { 
    console.debug("weatherDataSource.change"); 
    console.log("action: " + e.action); 
    if (e.action == "sync") { 
     console.log("Retrieve weather data..."); 
     this.read(); 
    } else { 
     var data = this.data(); 
     console.log(data[0]); 
     weatherViewModel.weather(data[0]); 
    } 
} 

但此方法有效,因为我可以用的onclick事件存取权限的数据。我需要使用绑定的原因是因为ajax请求是在dom元素之后完成的,所以我无法访问weather()。wind.speed,因为weather()在开始时为null。

+0

你可以发布你的viewmodel? – Damien

+0

确定它已更新。谢谢。 – amaik

回答

0

“with”绑定会创建一个上下文,并且该上下文中的所有绑定会自动引用父上下文。

因此,您的“文本”数据绑定失败,因为天气中没有天气功能。