Tag: knockout.js

加载HTML对象客户端(表单)

我必须编写一个单一的页面应用程序,将在整个应用程序使用相同的3种forms,只是每个人的行动将改变。 标签/input将是相同的,等等… 我想让我的应用程序快速响应,因此,我想知道,如果每次需要加载时通过Javascriptforms地生成FORM,而不是从服务器上以HTML格式下载,这是一个好主意。 那么,有没有什么好的做法,通过Javascript生成DOM objets? 第一次加载应用程序时,有没有办法下载每个FORM的HTML代码? 或者我必须每次通过与DOM的DOM对象构build它们? 这里有什么好的做法? 我使用node.js,knockout.js,jquery。 谢谢 !

你用什么来使JavaScript更像C#一样?

我开始一个新的基于ASP.Net的项目,在浏览器上使用JavaScript,JQuery等。 我不是javascript的专家,并且(在C#等多年之后),它的非结构化,无types的性质,没有阶级分层,全球化的一切,等等,都让它感到恼火(它可能并不像有时候那样糟糕)! 我知道有各种各样的项目可以使javascript变得更好,比如knockoutjs,typecript,node.js等等,我相信他们都有自己的长处和短处,也许可以使用它们的组合。 我有兴趣知道人们的经验和build议,以便使ASP.Net编程的JavaScript方面更加结构化(更像C#),而没有太多的学习曲线。

TypeScript与knockout.js和ORM

我想使用Type Knockout.js 3和ORM。 在DefinitelyTyped方面,我发现了不同的knockout.js模块,但我不确定是否需要所有这些模块来运行knockout.js 3? knockout.deferred.updates knockout.editables knockout.es5 knockout.kogrid knockout.mapper knockout.mapping knockout.postbox knockout.projections knockout.rx knockout.validation knockout.viewmodel 击倒 对于ORM和TypeScript,我find了node-orm2 。 是最好的方法去或ORM和TypeScript更好的解决scheme?

将数组添加到MongoDB / Mongoose集合时出错

我想添加一个数组到一个Mongo文档,并且我得到了错误"Cast to Array failed for value "[object Object],[object Object]" at path "vendors"" 这是我的模型: module.exports = { attributes: { vendors: { type: [String] }, description: { type: String } } }; 这是我的代码来创build: var vendors = ko.observableArray(['foo','bar']); var desc = ko.observable('yadda yadda yadda'); var dto = { data: { vendors: vendors(), description: description() } }; DataService.quoteRequest.create(dto);

javascript节点模块和纯脚本引用如何在浏览器中共存?

当采用模块化JavaScript方法进行开发时,使用Node.JS + npm和browserify捆绑到浏览器,如何处理这种情况,您可能需要使用不是以npm分发的JavaScript库? 最终,这些库甚至不能兼容模块化(amd / commonJs),因为它们不以模块化方式暴露任何东西。 其中一些存在于鲍尔,我明白,对于这些情况下,有资源,如browserify转换debowerify,但如果预期的图书馆本身不像一个模块行为,这将是没有任何帮助。 所以,我也想弄清楚的是:一旦你已经通过node.js + npm模块走了模块化JavaScript的path,是否达不到模块兼容的任何库的使用? 让我举一个具体的例子: 我有一个应用程序(npm包装淘汰赛)的main.js入口点,代码如下: var ko = require('knockout'); 我知道,当这个kovariables通过browserify到达浏览器时,它并没有绑定到全局范围,而是具有自己的范围,基本上包含了由npm加载的敲除文件/模块中定义的所有内容。 然后我有一个不是节点模块的第三方库,通过使用knockout来实现dom操作。 我将不得不提供第三方库的前提条件,作为一个额外的明确的<script>标记,在我的html文件中引用knockout,这样就把它钩到了全局(窗口)范围。 然后我会在两个地方淘汰赛,但是彼此孤立。 例如,我的main.js中的一个ko.applyBindings对于依赖于全局范围的挖空的另一个库是未知的。 如何(如果可能的话)我的模块化JavaScript实现处理这些双方共同的dom操作? 或者对于这种情况,它是一个互斥的编程模式,必须被采用(所有模块或所有非模块)?

将Property从Int转换为String并在KnockoutJS中显示

我想将我的Int值转换为我创build的json的string。 我的variablesResultType是INT,我想显示它的转换值。 ResultType保存值int,所以“1”,“2”等从我的数据库。 这是我的main.js代码 function InvestigatorInfo() { var self = this; self.ResultType = ko.observable(); } InvestigatorInfo.prototype.fromJS = function(data) { var self = this; self.ResultType(data.ResultType || ""); } 和我的观点: <ul data-bind="foreach:Infos"> <b>ResultType: </b><span data-bind="text: resultName[ResultType]"></span> 这是我的代码转换: resultName = {"0":"INVALID_VALUE","1":"NONE","2":"BOOLEAN"} 我需要首先在我的原型函数中检查int吗? 任何帮助将是apreciated。 谢谢

我可以在加载之前将globals注入到Node模块中吗?

我正在编写一个应用程序的目的是为浏览器,我想为我的库代码编写自动化testing。 我想在Node之外的命令行环境中运行这些testing。 我还没有select一个testing框架,虽然我倾向于像摩卡或茉莉花这样的BDD框架。 我的代码依赖于Knockout的可观察属性。 不幸的是,Knockout库不仅包含可观察的属性,还包含将它们绑定到DOM的代码。 所以,如果我只是试图从Node节点require()敲出Knockout库,我会得到错误,因为库试图引用Node中未定义的window , navigator和documentvariables。 Knockout实际上并不使用任何这些variables – 它主要是对DOM绑定进行一些特征检测,这对我来说并不重要,但是因为它确实使用了它们,所以Node甚至不会加载文件。 所以这里是我的问题: 我可以注入虚拟variables加载模块? 我可以做些什么来说:“加载源文件之后,但在开始运行之前,让我在模块中设置一些variables,以便代码能够成功运行”? 我知道CoffeeScript已经修补了Node的模块加载器,所以除了.js之外,它还可以加载.coffee文件; 所以似乎也可能有一些方法来修补它来注入variables,如果我只知道如何。

通过ejs将参数从node.js传递给knockout.js

我有一个node.js消耗mongodb数据,并使用knockout.js输出列表 当我调用视图我传递一个JSON结构使用 res.render('list', { items:json }); 在list.ejs模板页面中,我定义了一个隐藏的元素: <input type="hidden" id="hidden" value="<%= items %>"> 并在.js文件我读它的价值: var json=$("#hidden").val(); var tkts=jQuery.parseJSON(json); var vm=new AppViewModel(tkts); 嗯…它运行,但我认为(希望)必须有一个更好的办法做到这一点…有没有办法避免隐藏的HTMLvariables,例如?

实时数据绑定的JavaScript

我已经有了这个要求,我不是很成功地突破客户端技术。 希望有人可能已经解决了这样的难题,我不想再打破我的头,耽误了我的时间。 我的要求是: 我有一台服务器,它有一个数据处理引擎,平均每30秒就会提供一个数据库。 我需要一个客户端Web应用程序,我想根据我的服务器引擎生成的数据绘制一些图。 我可以find适合我的图表需求(Flotr2) 我已经为我的后端数据stream设置了一个Node.js服务器和socket.io comm。 我可以简单地使用普通的js和调用函数来绘制graphics来监听套接字。 但是,我的应用程序必须是高度可configuration的。 我想从数据库的多个列数据绘制单个graphics,以满足我的要求(这意味着,在单个元素的多个值)。 如果我使用普通的JavaScript来实现我的客户端,那么在某些时候,我的代码将变得无法维护,而且我可能正在重新创build现有的轮子。 所以,我正在寻找客户端库进行数据绑定(一个值到一个元素,多个值到单个元素,多个值到多个元素) 我基本上是一个后端和移动的家伙,但不是JS的家伙。 我浏览网页,并得到一些随机的build议,使用Knockout.Js,Angular.js,Backbone.js,Meteor.js,我不能依靠一个。 编辑: 我已经尝试了Knockout.js来进行客户端数据绑定。 我坚持我的第二个和第三个用例( 许多值单个元素和许多元素值 )。 假设从服务器得到{“a”:55,“b”:5,“c”:46}作为数据。 我有两个id为“x”,“y”的HTML元素。 我想将值a,b绑定到元素“x”,将值b,c绑定到元素“y”。 可能吗? 任何简单的小提琴将是很大的帮助。 那么,有人可以指出我的正确方向,在这里分享你的想法。

在SPA(单页面应用程序)中使用node.js + express.js在服务器端dynamic生成内容的SEO

我的客户端代码是一个单独的页面应用程序(写在knockout.js)与自己的路由系统,所以当谷歌爬虫机器人将尝试访问链接(这与后端请求新的页面无关,但只是客户端的一部分它会要求服务器(node.js + express.js)服务页面(例如'mywebsite / about'),当然服务器将返回404,因为它不知道客户端路由系统。 这是我目前的服务器代码: router.get('*', function(req, res, next) { res.sendFile(path.resolve('../dist/index.html')); }); 我的想法是定义与客户端相同的路由结构,并在search参数中传递客户端路由系统的路由: router.get('/about', function(req, res, next) { res.sendFile(path.resolve('../dist/index.html?tab=about')); }); 然后在客户端,我可以在JavaScript中捕捉并select正确的路线。 在这里当然我有另一个问题 – 据我所知,谷歌机器人不运行JavaScript ..但在这里,我可以使用prerender.io中间件,我猜。 1)这是一个正确的方式去与单页面应用程序生成的内容和search引擎优化? 2)如何从express.js传递search参数?