ASi*_*uat 0 html javascript jquery knockout-mapping-plugin knockout.js
我对 KnockoutJS 还比较陌生,我遇到了绑定问题,看不出哪里出了问题。我尝试过各种方法,但似乎没有任何效果。我确信可能有一个简单的解决方案,只是我看不到!
我通过 ajax 调用数据并尝试显示文本框中数据中的一项,然后可以更新该项目。我在控制台中收到以下错误:
未捕获的ReferenceError:无法处理绑定“with:function(){return KHAViewModel}”消息:无法处理绑定“with:function(){returnfundedWTEResults}”消息:无法处理绑定“textInput:function(){return ActualFundedWTE }" 消息:ActualFundedWTE 未定义
下面是我的代码的精简版本,我用一些 JS 复制了我的 ajax 脚本。我也在jsFiddle上复制了它上复制了它:
超文本标记语言
<div class="container">
<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>
</div>
<div class="container" id="dateSearch" >
<h2></h2>
<form class="form-inline" data-bind="with: KHAViewModel">
<div class="form-group" data-bind="with: fundedWTEResults">
<span>Funded WTE: </span>
<input id="fundedWTE" data-bind="textInput: ActualFundedWTE">
</div>
</form>
</div>
Run Code Online (Sandbox Code Playgroud)
JS
// KHA View Model
function KHAViewModel() {
var self = this;
self.fundedWTEResults = ko.observableArray([]);
function fundedWTE (team) {
// $.ajax({
// url: "/...",
// type: "POST",
// ...........
// });
var r = [{"Team":team,"ActualFundedWTE":12.00}];
ko.mapping.fromJS(r, {}, self.fundedWTEResults);
}
fundedWTE('TeamA');
}
// Master View Model
function masterVM() {
var self = this;
self.KHAViewModel = new KHAViewModel();
};
// Activate Knockout
ko.applyBindings(new masterVM());
Run Code Online (Sandbox Code Playgroud)
看来@user3297291 已经以惊人的速度解决了您的问题。
使用 ko.dataFor 和 ko.contextFor 是将来在调试此类问题时对您有所帮助的一项技巧。特别是如果您使用 Chrome,控制台上的 $0 指的是开发人员工具中当前选定的元素。
选择您要调查的元素,然后在开发控制台中键入:
ko.dataFor($0)
ko.dataFor(document.getElementById("fundedWTE")) //Equivalent to this
Run Code Online (Sandbox Code Playgroud)
它将显示该元素所绑定的内容,这通常足以帮助您了解绑定上下文的实际内容。
ko.contextFor 为您提供更多信息,如果您正在使用 $root、$parent、$parents 等,这会很方便。
| 归档时间: |
|
| 查看次数: |
7425 次 |
| 最近记录: |