我正在玩breezejs淘汰赛Todo-list教程/模板 (http://www.asp.net/single-page-application/overview/templates/breezeknockout-template)。 我决定创建一个新的Employees类,看看我是否可以绑定到员工列表。
视图引用VM'results'中的一个变量,该变量应该是一个可观察的员工阵列。
<section data-bind="foreach: results">
<article>
<header>
<form>
<input type="text" data-bind="value: firstName" />
</form>
</header>
</article>
</section>
在viewmodel中,我添加了结果var和一行,以便自动将员工加载到结果变量中。
/* Defines the Todo application ViewModel */
window.todoApp.todoListViewModel = (function (ko, datacontext) {
var results = ko.observableArray();
var todoLists = ko.observableArray(),
error = ko.observable(),
viewmodel = {
showTestPage: showTestPage,
results: results,
todoLists: todoLists,
error: error,
addTodoList: addTodoList,
deleteTodoList: deleteTodoList,
clearErrorMessage: clearErrorMessage,
searchTerms: ko.observable(""),
performSearch: performSearch
};
// load todoLists immediately
datacontext.getTodoLists(todoLists, error);
// load employees
datacontext.getEmployees(results, error);
return viewmodel;
这是我的datacontext函数
function getEmployees(empObservable, errorObservable)
{
return breeze.EntityQuery
.from("Employees")
.where('lastName', 'startsWith', 'G')
.orderBy("lastName")
.using(manager).execute()
.then(getSucceeded)
.fail(getFailed);
function getSucceeded(data) {
empObservable(data.results);
}
function getFailed(error) {
errorObservable("This is broke *BREAK*" + error.message + "*BREAK*");
}
}
失败发生,我看到的error.message包含了我应该在结果中获得的数据。它甚至可以正确排序和过滤,但我只是在下面显示一条记录作为例子。我没有收到任何其他错误消息。
This is broke *BREAK*[{"$id":"1","$type":"ToDoBreeze.Models.Employee, ToDoBreeze","ID":"12345","LastName":"Gaston","FirstName":"Jake"}]*BREAK*
我认为没有其他人搞乱这个模板有类似的问题吗?
答案 0 :(得分:1)
我花了一些时间找到这个问题的正确单词,但看起来这就是答案。我猜我会留下我以防万一其他人找到它。 (Query failed and the error.message is the data)
基本上,我在模型中的员工初始化程序中有一些不应该存在的东西。