草庐IT

模型优化

全部标签

javascript - 优化将 JSON 属性名称小写的 JavaScript 代码

我正在开发一个Web应用程序,该应用程序接收具有大写属性名称的JSON数据。我需要这些属性名称是小写的,所以我使用一个函数递归循环遍历JSON对象并将它们转换为小写。问题是我的JSON回复可能会变得非常大。我希望该函数即使必须处理具有60,000个属性名称和各种嵌套级别的JSON,也能表现良好。小写函数是:FN=function(obj){varret=null;if(typeof(obj)=="string"||typeof(obj)=="number")returnobj;elseif(obj.push)ret=[];elseret={};for(varkeyinobj)ret[S

javascript - Backbone.js:在不保存的情况下上演新模型

在backbone.js中有没有办法建立一个新模型(即用空属性实例化类),而不将它保存回服务器?具体来说,我有一个包含多个项目的集合。当我想在我的集合中创建一个新项目时,我调用collection.create{}。这会自动将空模型保存回我的数据库。在Rails中,Class.create和Class.new之间有区别,前者实际上创建了一条数据库记录,后者只是在内存中创建了一条记录,并且必须手动保存。我基本上是在寻找Backbone等效物。 最佳答案 代替Collection.create,使用Collection.add.

javascript - 观察外部模型的 Angular Directive(指令)

在学习Angular时,我正在创建一个可以缩放的简单画廊。我最初的实现使用了一个简单的ng-repeat,但我很快发现,基于画廊的缩放,我想要更改url源(从小拇指到中拇指),可能还有标题上的css等。{{photo.caption}}{{photo.date}}所以,我改用了一个更简洁的指令:但我能让指令元素响应缩放更改的唯一方法是在元素链接内的缩放中添加一个watch:link:function(scope,element,attrs){varimage=newImage();scope.photo.url=scope.zoomSize我知道你不应该滥用watch,我担心的是,画廊

javascript - 如何在初始 View 模型加载为空时初始化 Knockout View 模型

我正在使用Knockout来实现类(class)列表选择工具。我正在使用下面的方法来填充数据(MVC3/Razor),以便在最初填充View模型时,我可以毫无问题地使用每个KO数组(即CourseList、ScheduleList)。但是,当服务器的初始加载返回零行时,这意味着View模型的“ScheduleList”属性为空,则无法调用任何方法,例如.push()或.removeAll()。据推测,这意味着从未创建可观察数组,因为没有任何东西可以填充它。填充模型后,ScheduleList属性会填充一个列表。当MVC操作将其返回为空时,实例化它的最佳方法是什么?有一个jsFiddle

javascript - 如何优化 javascript/jquery 代码以加快其性能?

在我的一个网络项目中,我使用了大量的javascript/jQuery代码,这在浏览器(Windows7x64)上非常慢,尤其是在IE上。我只在主页上同时使用3个Ajax请求。在搜索页面上,我还使用了ajax请求,这些请求在滚动事件、任何“搜索标签”(简单anchor标签)点击事件等上触发,这通常会使数据加载非常慢。我使用jQuery插件,例如Anythingslider、jquerycoockies插件、Raty(评分插件)、Tipsuy、jQuerycoreUISelect、jScrollPane、鼠标滚轮等。所有这些第3方插件我都已缩小并合并到jquery.plugins.js中

javascript - 在模型更改时触发自定义 AngularJS 表单验证

我有一个自定义验证指令,用于确保两个日期在有效范围内。当用户更改值时该指令工作正常,但是当我通过AJAX加载新的lineItem模型时它不会触发。问题是用户可以在表单中输入无效日期并触发错误,然后加载另一个lineItem。此时,即使表单中的数据有效,表单上也会出现错误消息。如果我尝试使用Angular的内置验证(如required)做同样的事情,验证会触发并适当消失。那么,我需要做什么才能使我的验证触发方式与Angular的触发方式相同?(注意:我在表单属性和Angularv1.1.5上使用novalidate)指令ngApp.directive("validateBefore",f

javascript - 如何禁用 V8 的优化编译器

我正在编写一个恒定时间的字符串比较函数(用于node.js),并且想为这个单一函数禁用V8的优化编译器;使用命令行标志是不可能的。我知道使用with{}(或try/catch)block将禁用优化编译器现在,但我担心这个“功能”(bug)将在未来的版本中修复。是否有一种不可变的(并记录在案的)方法来禁用V8的优化编译器?示例函数:functionconstantTimeStringCompare(a,b){//Byaddinga`with`blockhere,wedisablev8'soptimizingcompiler.//UsingObject.create(null)ensure

javascript - 继承 Sails.js 模型的属性和生命周期函数

我想创建一组在我的所有Sails.js模型之间共享的自定义属性和生命周期方法。Sails.js通过调用Waterline.Collection.extend()方法并提供在/api/models中找到的模型定义来自动创建和注册模型对象目录。从父项扩展我的模型定义的最佳方式是什么?我已经尝试使用_.extend(sails.config.model.parentModel,childModel)但遗憾的是sails对象没有全局公开(因为这是在加载orm之后完成的)钩)。我也可以简单地require()我所有模型中的基本模型并扩展它。什么是适合Sails的简洁方法?

javascript - Asp.Net MVC 4 从表单发布中的对象数组自动绑定(bind)模型

我在JavaScript中构建了一个对象数组,并希望通过Ajax将它们发回服务器(我正在使用jQuery)JavaScript对象数组如下所示:varcolumns=[{name:'col1',source:'whatever',hidden:false,width:50},...];我是这样回发的:$.post('/MyController/MyAction',{'columns':columns});在Controller操作上我目前得到这个:我有一个名为JqColumn的C#对象,我想将帖子绑定(bind)到该对象中,它看起来像这样:publicclassJqGridColumn

javascript - angular 2模型驱动的嵌套表单组件

我有什么:我正在构建一个ionic2应用程序并构建了一个基本的angular2组件,其中包含一个输入框显示输入标题的标签显示任何验证错误的标签我将把它称为我的输入组件我有一个带有表单的页面组件,目前有文本输入。1个常规输入(密码)和1个包装在我的输入组件(用户名)中的输入。这是我页面组件的相关部分ngOnInit(){this.loginForm=this.formBuilder.group({username:['',Validators.required],password:['',Validators.required]});}这是页面组件模板PasswordThisfieldi