【发布时间】:2014-05-06 12:36:47
【问题描述】:
我有另一个函数从服务器调用“GetEmployee”函数,当我在 Chrome 调试器中检查调用时,我可以看到我的详细信息按预期通过,所以这不是服务器端错误。
但是,如果我在quickBookingSource 的第三行放置断点,则永远不会到达断点。我确实在 viewModel 定义中有quickBooking:quickBookingSource 并且没有拼写错误。
另外,你会看到我添加了一个带有“blah”文本的三元运算符作为安全网,但无济于事
我得到的错误信息是:
Uncaught ReferenceError: Unable to process binding "text: function (){return project }"
Message: project is not defined
代码是:
HTML
<div data-bind="dxTileView: {listHeight:tileWidgetHeight,itemClickAction:sendProject,baseItemHeight: 80, baseItemWidth: 100,dataSource:quickBooking}">
<div data-options="dxTemplate : { name:'item' }" class="tile">
<h2 data-bind="text: project"></h2>
<p data-bind="text: name"></p>
<p data-bind="text: costCenter"></p>
<p>Jetzt Büchen</p>
</div>
</div>
JS
var quickBookingSource = DevExpress.data.createDataSource({
load: function (loadOptions) {
if (loadOptions.refresh) {
var deferred = new $.Deferred();
callService("GetEmployee",
{
employeeNo: aktivEmployee.id
},
function (result) {
var mapped = $.map(result, function (data) {
return {
name: data.LastNProjects? data.LastNProjects["Name"]:"blah",
project: data.LastNProjects? data.LastNProjects["Address"]:"blah",
costCenter: data.LastNCostCenters? data.LastNCostCenters["Name"]:"blah"
}
});
deferred.resolve(mapped);
});
return deferred.promise();
}
},
});
提前致谢
【问题讨论】:
-
项目属性是可观察的吗?来自 quickBookingSource 的数据是否被放入绑定到 HTML 的主 ViewModel 上的 observable 中?
-
@William 项目不是可观察的。我主要从同一个项目中另一个视图的 tilewidget 复制代码,工作正常。
-
这个错误听起来像是 KO 在绑定到 UI 的 VM 上寻找一个可观察的命名项目,但找不到它。你的视图模型是什么样的?
标签: javascript knockout.js devextreme