Javascript 每个绑定的敲除器不工作
我正在关注John Papa关于SPA的jumpstart课程,并试图显示通过ASP.NET Web API加载的客户列表。敲除foreach绑定不起作用。WebAPI运行良好,我已经在它自己的平台上进行了测试,它返回了正确的JSON,因此我不会发布它的代码。get方法只返回一个对象数组,每个对象都有属性Name和Email。虽然不是一个好的实践,但通过在durandal之前加载敲除,敲除在全球范围内暴露为Javascript 每个绑定的敲除器不工作,javascript,knockout.js,durandal,Javascript,Knockout.js,Durandal,我正在关注John Papa关于SPA的jumpstart课程,并试图显示通过ASP.NET Web API加载的客户列表。敲除foreach绑定不起作用。WebAPI运行良好,我已经在它自己的平台上进行了测试,它返回了正确的JSON,因此我不会发布它的代码。get方法只返回一个对象数组,每个对象都有属性Name和Email。虽然不是一个好的实践,但通过在durandal之前加载敲除,敲除在全球范围内暴露为ko 我将customers.js视图模型编码如下 define(['services/d
ko
我将customers.js视图模型编码如下
define(['services/dataservice'], function(ds) {
var initialized = false;
var customers = ko.observableArray();
var refresh = function() {
return dataservice.getCustomers(customers);
};
var activate = function() {
if (initialized) return;
initialized = true;
return refresh();
};
var customersVM = {
customers: customers,
activate: activate,
refresh: refresh
};
return customersVM;
});
我编码的dataservice模块如下(我没有在函数queryFailed
下面编写,因为我知道它没有被使用)
最后,模型模块构建如下:
define(function () {
var Customer = function (dto) {
return mapToObservable(dto);
};
var model = {
Customer: Customer
};
return model;
function mapToObservable(dto) {
var mapped = {};
for (prop in dto)
{
if (dto.hasOwnProperty(prop))
{
mapped[prop] = ko.observable(dto[prop]);
}
}
return mapped;
}
});
视图就是一个列表,它就是:
<ul data-bind="foreach: customers">
<li data-bind="text: Name"></li>
</ul>
但这不起作用。任何其他绑定都可以工作,我已经查看了控制台窗口,似乎可以正确填充可观察数组。唯一的问题是这段代码没有在屏幕上显示任何内容。我已经检查了很多次这些文件,但似乎找不到问题所在。这有什么问题?我在你的代码中没有看到你在ViewModel上调用的
ko.applyBindings
。你可以使用knockout.js上下文调试器chrome扩展来帮你调试问题
我知道这个问题有点老了,但我想我会添加我的回答,以防其他人遇到与我相同的问题 我使用的是Knockout JS 2.1.0版,似乎我能在foreach循环中显示数据的唯一方法是使用:
$data.property
所以在你的例子中是
$data.Name
希望这有帮助KO在非容器元素(如上面的
中使用foreach)中存在已知问题,因此必须使用无容器控制流语法
e、 g
Ref:好吧,我只是在一个本地问题上花了很多时间才意识到,如果使用ko HTML注释格式,应该是这样的:
<!-- ko foreach: arrecadacoes -->
<!-- ko: foreach: arrecadacoes -->
不是这样的:
<!-- ko foreach: arrecadacoes -->
<!-- ko: foreach: arrecadacoes -->
:
在ko
之后不使用。…区分大小写?您在上面说过属性是Name和Email,但您的绑定是text:Name。@Brad,我在这里写错了。我在我的代码中也写了错误的案例,但即使纠正了这一点,它仍然不起作用。你还有别的想法吗?谢谢你的帮助。你记得调用applyBindings吗?控制台中有什么错误吗?你选择了一个解决方案,但你没有提到出了什么问题。这是真的,但我正在使用Durandal,我听说Durandal会自动调用ko.applyBindings
。事实上,其他绑定正在工作,只是foreach
引起了麻烦。还有别的事吗?