Breeze不会生成ko observables

时间:2012-11-27 10:24:11

标签: knockout.js breeze

我有一个简单的MVC4 + ko + breeze webapp有以下问题: 查询返回的breeze实体是简单的javascript对象,没有ko observables。 我检查了todo样本(正确地返回ko observables)并且我没有找到breeze配置为使用ko(并生成observables)的地方。 我尝试添加以下几行,但没有改变:

var core = breeze.core;
var entityModel = breeze.entityModel;

core.config.setProperties({
    trackingImplementation:     entityModel.entityTracking_ko,
    remoteAccessImplementation: entityModel.remoteAccess_webApi
});

提前感谢您的帮助

3 个答案:

答案 0 :(得分:4)

@frenchfraso - 自从您编写代码以来,可能需要了解Breeze的一些改进。

不推荐使用entityModel命名空间,其上的所有内容都已提升为breezeentityModel命名空间仍然可以工作......但是当你有时间时,你想要摆脱它。以下是您今天创建EntityManager的方法:

  var manager = new breeze.EntityManager(serviceName);

Knockout现在是默认的“modelLibrary”适配器,Web API是默认的“dataservice”适配器,因此您不再需要配置breeze core。

这意味着您可以 简单地删除问题中的每一行代码 :)

有一种新语法可指定非默认的Breeze适配器。这是一个配置Breeze使用Backbone模型库而不是Knockout的示例:

  breeze.core.config.initializeAdapterInstances({modelLibrary: "backbone"});

答案 1 :(得分:4)

我的问题是我在微风吹过后装满了淘汰赛,因此微风让我回到POJO物品上。

<script src="Scripts/jquery-1.9.1.js"></script>
<script src="Scripts/q.js"></script>
<script src="Scripts/breeze.debug.js"></script>    
<script src="Scripts/knockout-2.1.0.debug.js"></script>
<script src="Scripts/toastr.js"></script>
<script src="Scripts/require.js" data-main="App/main"></script>    

更改加载顺序后breeze返回KO observables:

<script src="Scripts/jquery-1.9.1.js"></script>
<script src="Scripts/q.js"></script>
<script src="Scripts/knockout-2.1.0.debug.js"></script>
<script src="Scripts/breeze.debug.js"></script>    
<script src="Scripts/toastr.js"></script>
<script src="Scripts/require.js" data-main="App/main"></script>    

答案 2 :(得分:2)

疑难杂症! 问题出在WebApi控制器中的几个缺少的属性中:

[JsonFormatter, ODataActionFilter]
public class MyController : ApiController
{
    // my methods...
}

添加[JsonFormatter,ODataActionFilter]后,返回的实体具有预期的ko observables!