BreezeJS编辑数据不工作
我能够按照说明添加数据,这部分内容简单易懂。但当我试图按照指示编辑数据时,我完全迷路了 我遵循的是todo示例,它工作得很好,但是当我尝试使用相同的原则添加到我自己的项目中时,没有任何效果 在我的控制器中,我有以下功能:BreezeJS编辑数据不工作,breeze,Breeze,我能够按照说明添加数据,这部分内容简单易懂。但当我试图按照指示编辑数据时,我完全迷路了 我遵循的是todo示例,它工作得很好,但是当我尝试使用相同的原则添加到我自己的项目中时,没有任何效果 在我的控制器中,我有以下功能: function listenForPropertyChanged() { // Listen for property change of ANY entity so we can (optionally) save var token = dataservi
function listenForPropertyChanged() {
// Listen for property change of ANY entity so we can (optionally) save
var token = dataservice.addPropertyChangeHandler(propertyChanged);
// Arrange to remove the handler when the controller is destroyed
// which won't happen in this app but would in a multi-page app
$scope.$on("$destroy", function () {
dataservice.removePropertyChangeHandler(token);
});
function propertyChanged(changeArgs) {
// propertyChanged triggers save attempt UNLESS the property is the 'Id'
// because THEN the change is actually the post-save Id-fixup
// rather than user data entry so there is actually nothing to save.
if (changeArgs.args.propertyName !== 'Id') { save(); }
}
}
问题是,每当我更改视图上的控件时,propertyChanged回调函数永远不会被调用
以下是服务的代码:
function addPropertyChangeHandler(handler) {
// Actually adds any 'entityChanged' event handler
// call handler when an entity property of any entity changes
return manager.entityChanged.subscribe(function (changeArgs) {
var action = changeArgs.entityAction;
if (action === breeze.EntityAction.PropertyChange) {
handler(changeArgs);
}
});
}
如果我在直线上放置一个断点:
var action = changeArgs.entityAction;
在我的项目中,它从未到达那里;在todo示例中,确实如此!它完全跳过整个过程,然后加载视图。所以我的回调函数都不起作用;实际上,没有订阅任何内容
因此,当我尝试保存更改时,manager.hasChanges()总是false,数据库中不会发生任何事情
我已经试了至少三天来让它工作,我完全被整个问题对我来说是多么复杂的事情弄得目瞪口呆
注意:我使用的是JohnPapa的热毛巾模板。我试着按照Todo编辑功能进行操作。。没有任何事情是我想要的
非常感谢您的帮助。我一直认为问题出在javascript客户端端。事实证明,在创建投影DTO时,编辑不起作用 因此,在我的服务器端,我创建了一个查询:
public IQueryable<PersonDTO> getPerson(){
return (from _person in ContextProvider.Context.Queries
select new PersonDTO
{
Id = _person.Id,
FirstName = _person.FirstName,
LastName = _person.LastName
}).AsQueryable();
}
也许如果有一个“manager.getEntity”也许会有帮助
无论如何,我更改了上面的查询,以直接从源代码获取它:
public IQueryable<Person> getPeople(){
return ContextProvider.Context.People;
}
public IQueryable getPeople(){
返回ContextProvider.Context.People;
}
注意:ContextProvider是:
readonly EFContextProvider<PeopleEntities> ContextProvider =
new EFContextProvider<PeopleEntities>();
readonly EFContextProvider ContextProvider=
新的EFContextProvider();
因此javascript中的subscribe方法检查直接从上下文对象检索的信息。。有趣的真希望我没有在这上面花4天时间
readonly EFContextProvider<PeopleEntities> ContextProvider =
new EFContextProvider<PeopleEntities>();