【发布时间】:2015-02-16 04:09:58
【问题描述】:
我是 AngularJS 和 Breeze 的新手。我正在尝试保存更改并遇到问题。这是我的代码:
在控制器中:
function update() {
vm.loading = true;
return datacontext.saveSettings().then(function () {
vm.loading = false; // never gets called
}).fail(function (data) {
vm.loading = false; // never gets called
});
}
在数据上下文中:
function saveSettings() {
if (manager.hasChanges()) {
manager.saveChanges() // breaks here if there are changes
.then(saveSucceeded)
.fail(saveFailed)
.catch(saveFailed);
} else {
log("Nothing to save");
return false;
};
}
错误是在angular.js 中抛出的,它非常无用TypeError: undefined is not a function 我想我在这里遗漏了一些简单的东西,但无法弄清楚它是什么。
要注意它确实向服务器上的 SaveChanges 方法发送了正确的数据,但是在收到来自服务器的任何响应之前就抛出了错误。收到响应后,它会引发另一个错误TypeError: Cannot read property 'map' of undefined,但这可能与我返回的响应无效有关。我还没到那部分。
有人可以帮忙吗?我迷路了。
更新
这是我构建数据服务和管理器的方式:
var serviceName = "http://admin.localhost:33333/api/breeze/"; //
var ds = new breeze.DataService({
serviceName: serviceName,
hasServerMetadata: false,
useJsonp: true,
jsonResultsAdapter: jsonResultsAdapter
});
var manager = new breeze.EntityManager({ dataService: ds });
model.initialize(manager.metadataStore);
【问题讨论】:
-
@Kiee 不确定你的意思是什么?我尝试遵循 Hot Towel 应用程序示例并构建与此类似的数据上下文。所有获取数据方法都可以正常工作,因此数据上下文可以正常工作,我更新了问题以包括我创建管理器的方式。
-
我不太确定,但如果
datacontext.saveSettings()在更新函数中没有返回承诺,你就不能使用then函数。 -
@JenishRabadiya 代码取自这里 getbreezenow.com/documentation/save-changes ,知道如何返回承诺以及它应该包含什么吗?
-
嗨,你获取元数据了吗????
-
@parthicool05 不,我没有服务器元数据,因为我没有使用实体框架。我在客户端上手动构建了我的模型,我怀疑问题可能存在,尽管正如我之前所说,获取数据和绑定工作正常。
标签: javascript angularjs breeze