草庐IT

模型前端框架

全部标签

javascript - 为什么现代 JavaScript 框架不鼓励与 DOM 直接交互

在处理AngularJS、Angular和React等JS框架时,我观察到不鼓励直接与DOM交互,如果忽略警告,通常会导致错误。当我说“与DOM交互”时,我的意思是使用document.getElementById('myElement')和类似的方法来执行一些操作或从文档中读取值。我的问题本质上是为什么?。这是一个虚拟DOM问题吗,其中React(例如)没有跟踪实际DOM,因此如果您“自行”进行更改而不通知React并随后更新虚拟DOM,您会措手不及吗?在这种情况下,Angular会有同样的问题吗?如果有人只了解特定框架,我会非常有兴趣阅读我的问题的答案,即使它没有被概括。显然,我要

javascript - 类似于 Prism for Knockout js 的框架

Microsoft为Silverlight和WPF制作了Prism框架。它的RegionManager和其他东西看起来很棒。Knockout有没有类似的框架?谢谢。 最佳答案 RobEisenberg,Caliburn.Micro的开发者(IMO是可用于XAML应用程序的最佳MVVM框架)正在开发使用Knockout的Durandal。源的早期版本是here,你可以阅读一些关于设计概念的信息here. 关于javascript-类似于PrismforKnockoutjs的框架,我们在St

javascript - 将挖空 View 模型拆分为多个文件

我的View模型开始变得非常大,所以我决定将它分成多个文件。我已经尝试了许多不同的方法,但没有任何效果。我的View模型如下所示:namespace.model=function(constructorParam){varself=this;self.param1=ko.observable(constructorParam.param1);self.param2=ko.observable(privateFunction(constructorParam));self.clickEvent=function(){//dosomethingwithparams//callsomepri

javascript - 当以编程方式更改模型时,ngChange 不起作用?

它在thedocs中说ngChange不会触发:“如果模型以编程方式更改,而不是通过更改输入值”。这是否意味着如果您曾经以编程方式更改模型,则不能使用ngChange?或者这是否意味着在以下情况下您不能使用ngChange:1)您以编程方式更改模型和2)您无法通过输入字段更改模型 最佳答案 这只是意味着如果使用javascript更改模型,则不会评估ngChange表达式。如果您希望ngChange触发,您需要以编程方式调用类似于以下的表达式:如果你想让它触发,你需要手动调用change函数:$scope.confirmed='te

javascript - jQuery,Web 应用程序框架?

我使用jQuery组合网站的时间最长。现在我有兴趣制作一个Web应用程序(一个页面加载整个网站的功能,如Gmail)。是否可以利用任何jQuery框架或实践来构建我的应用程序,这样我就不必重新造轮子,或者在我开始的时候把一些东西拼凑在一起?谢谢 最佳答案 (不是那么多)选项之一是JavascriptMVC,这非常酷,我已经将它用于一个中型项目。它的网站非常令人沮丧,但给它一个机会并观看thevideo.一个积极的方面是它的创建者总是在JMVC的谷歌组中非常快速地回答。但是,实际上,如果我必须重新制作我提到的项目,我不会使用它,因为j

javascript - 覆盖 Backbone 模型更改事件

我想我想做的事情很简单,我只是不知道该怎么做。我想在我的一个模型属性发生变化时触发我自己的事件,以便将一些数据传递给事件处理程序(无论变化是值的增加还是减少)。基本上我希望我的处理程序在View中执行此操作handler:function(increased){if(increased){alert("thevalueincreased")}else{alert("thevaluedecreased")}}//...this.model.on("change:attr",this.handler,this); 最佳答案 开始吧:您基

javascript - getter 与直接访问模型属性之间的 backbone js 区别

backbone-js使用语法的优势/原因是什么//usingaModelinstancecalledmodelmodel.get('attribute')而不是model.attribute我刚开始使用backbone,我总是发现自己试图直接访问属性 最佳答案 如果您查看源代码,get函数只是调用了this.attributes[name]。http://backbonejs.org/docs/backbone.html#section-31不过,至少有两方面的好处:1)一致的API,可减少您编写的代码量2)能够重写get方法并提

javascript - 从服务器推送 websocket 数据后 Angularjs 模型发生变化

我正在尝试在从服务器推送websocket后更改我的Angular模型。每次服务器提供新数据时,如何更改$scope.contacts等值......?我不确定使用$apply是否可行。我知道我可以访问DOM元素检索范围然后更改值,但应该有更好的解决方案!我对无需创建Angular模块即可从外部更新Angular模型的解决方案非常感兴趣,因为我使用的是发出更改事件的相关数据源。有没有像在Backbone.js中那样的简单方法,您可以在其中说:varbook=newBackbone.Model({title:'value'});book.set("title","AScandalinBo

javascript - 使用 "on change"回调从 jQuery 插件更新 AngularJS 模型

我正在为需要屏幕键盘的触摸屏计算机构建网络应用程序,并尝试使用这个出色的(或者至少是我能找到的唯一一个还不错的)键盘。https://github.com/Mottie/Keyboard/问题是,正如您可能已经猜到的那样,使用屏幕键盘时模型不会更新。这是我的代码,它可以工作,但有点丑陋:部分HTML:从部分页面Controller初始化键盘:$('.keyboard').keyboard({stickyShift:false,usePreview:false,autoAccept:true,change:function(e,kb,el){$scope.newUser.name=el.

javascript - 深度克隆 Backbone.js 模型

我在jquery中与backbone.js一起工作,遇到需要复制模型的情况,但我需要对它们进行深层复制,因此副本之间不存在引用。模型可以有其他模型作为属性。模型可以将匿名函数作为属性。所以我正在努力创建一种算法,该算法将深度克隆大多数主干模型。我希望在此复制期间应删除所有绑定(bind)(对于新实例),因此我不担心试图保留它们。目标:能够复制所有简单变量(String、Int、float等)并将其以相同的名称存储到新模型中。完成,使用toJSON创建一个可以传递给set()的新JSON对象。该对象仅包含简单属性,即不包含分配给函数或其他模型的属性。能够在事先不知道函数/属性名称的情况下