小编Bra*_*ite的帖子

使用模型编号的Angularjs ng-options不选择初始值

我正在尝试使用ng-options和a <select>将数字整数值绑定到相应选项的列表.在我的控制器中,我有这样的事情:

myApp.controller('MyCtrl', function() {
    var self = this;

    var unitOptionsFromServer = {
        2: "mA",
        3: "A",
        4: "mV",
        5: "V",
        6: "W",
        7: "kW"
    };

    self.unitsOptions = Object.keys(unitOptionsFromServer).map(function (key) {
        return { id: key, text: unitOptionsFromServer[key] };
    });

    self.selectedUnitOrdinal = 4; // Assume this value came from the server.
});
Run Code Online (Sandbox Code Playgroud)

HTML:

<div ng-controller="MyCtrl as ctrl">
    <div>selectedUnitOrdinal: {{ctrl.selectedUnitOrdinal}}</div>
    <select ng-model="ctrl.selectedUnitOrdinal" ng-options="unit.id as unit.text for unit in ctrl.unitsOptions"></select>
</div>
Run Code Online (Sandbox Code Playgroud)

这里有一个jsFiddle演示了这个问题,以及我采取的一些其他方法,但我并不满意.

正在使用空值初始化select选项,而不是在此示例中预期的"mV".如果您选择其他选项 - selectedUnitOrdinal正确更新,绑定似乎工作正常.

我注意到如果你将初始模型值设置为字符串而不是数字,那么初始选择就可以了(参见小提琴中的#3).

我真的希望ng-options能够很好地使用数字选项值.我怎样才能优雅地实现这一目标?

angularjs ng-options angularjs-ng-options

60
推荐指数
7
解决办法
6万
查看次数

如何从JSON Schema默认构造JavaScript对象?

我已经开始在我的C#代码中使用Newtonsoft.Json.Schema.JsonSchemaGenerator以及各种属性属性来帮助保持我的客户端脚本DRY.我想要做的是根据服务器的架构创建一个默认的初始化对象客户端.例如,当用户单击"New Foo"以将新条目添加到表中时,这将非常有用.

显然,我可以编写代码来迭代.Properties并构建新对象,这正是我目前正在做的事情.但是我宁愿避免重新发明轮子.

是否有任何用于处理JSON模式的JS库可以做到这一点,还有其他一些我尚未意识到需要的漂亮的东西?


2013年1月29日更新

有些人试图回答我的问题而已经离开了基地,结果收到了SO社区的一些负面反馈.所以让我试着澄清一些事情.这是挑战:

  • 在JS客户端脚本中,您有一个对象,它表示另一个对象的JSON 模式.比方说,这来自服务器通过JSON.NET,是C#类的表示.

  • 现在,在JS客户端脚本中,基于JSON 模式创建其中一个对象.必须根据模式默认初始化对象中的每个字段/属性,包括所有包含的对象!

  • 奖励:使用MVVM将此新对象绑定到UI(例如Knockout).更改一些字段以响应用户输入.

  • 将此新对象发送到服务器.服务器端代码将它添加到集合,数据库表,等等.(是的,该对象将使用Ajax作为JSON发送 - 我们可以假设)

  • 没有重复!定义类的唯一位置是服务器端代码(在我的示例中为C#).这包括所有元数据,例如默认值,描述文本,有效范围等.

javascript json jsonschema

7
推荐指数
1
解决办法
2072
查看次数

TFS检查包含"较大"二进制文件的变更集的超时

我正在执行从tfs.visualstudio到内部部署2012服务器的TFS集成迁移.我遇到了一个特殊变更集的问题,其中包含多个超过1 MB的二进制文件,其中一些是15-16 MB.[我正在使用内部部署TFS进行远程(WAN)工作]

从TFSI日志中,我看到: Microsoft.TeamFoundation.VersionControl.Client.VersionControlException: C:\TfsIPData\42\******\Foo.msi: The request was aborted: The request was canceled. ---> System.Net.WebException: The request was aborted: The request was canceled. ---> System.IO.IOException: Cannot close stream until all bytes are written.

做一些谷歌搜索,我遇到其他人遇到类似的问题,不一定涉及TFS集成.如果我只是检查符合相同标准的正常变更集,我相信会出现同样的问题.据我了解,在上传文件(签入)时,默认的块大小为16MB,超时为5分钟.

我的网络上传速度仅为1Mbit/s.(虽然我认为问题可以通过足够的上传带宽来缓解,但它无法解决问题).

使用TCPView,我在上传过程中观察了客户端与TFS服务器的连接.我看到的是9个同时连接.因此,我的带宽在9个文件上传之间共享.果然,在大约5分钟之后,连接在上传字节计数完成之前就会消失.

我的问题是,如何配置我的TFS客户端以利用更少的并发连接,和/或更小的块大小,和/或增加超时?这可以在某个地方全局完成,以涵盖VS,TF.EXE和TFS集成吗?

tfs tfsintegrationplatform tfs2012

5
推荐指数
1
解决办法
2425
查看次数