Tag: ember.js

Bootstrap,Angular.js和Ember.js中使用的数据属性选项是否与Unobtrusive Javascript原则相冲突?

我总是被告知这是一个很好的做法(ala'unobtrusive javascript)从HTML标记中分离JavaScript。 然而,我已经看到了一些新的和stream行的框架,如Bootstrap,Angular.js和Ember.js的相反趋势。 有人可以告诉我为什么这不被认为是不好的做法?

EmberJS操作 – 在包装在“actions”中时调用另一个操作

当在EmberJS控制器的actions中进行包装时,如何从另一个动作调用一个动作? 使用现在不推荐的方式来定义操作的原始代码: //app.js App.IndexController = Ember.ArrayController.extend({ // properties /* … */ // actions actionFoo: function() { /* … */ this.actionBar(); }, actionBar: function() { /* … */ } }); //app.html <div class="foo" {{action actionFoo this}}> <div class="bar" {{action actionBar this}}> 但是,使用EmberJS 1.0.0时,我们得到了一个弃用警告,指出动作必须放在控制器内的动作对象内,而不是像上面那样直接放在控制器内。 根据build议更新代码: //app.js App.IndexController = Ember.ArrayController.extend({ // properties /* … */ // actions actions: […]

显示包含html标签的属性

我有一个包含html标签( <br /> , <strong> , <p> , <span>和类似东西)的一个ember属性。 我怎么能告诉烬不逃避这个文本? 是否有任何默认Handlebars助手从烬,或需要我写我自己?

如何在Ember中使用jsTree插件

我已经使用jsTree插件来渲染我的产品中的大量树节点。 现在我正在转移到Ember,需要在Ember中实现jsTree插件。 我写了一个Ember组件来使用jsTree来呈现我的文件夹结构。 我的组件: <script type="text/x-handlebars" data-template-name="components/temp-tree"> <div id="treediv">Tree Data</div> </script> App.TempTreeComponent = Ember.Component.extend({ didInsertElement: function(){ var self = this; self.$().jstree({ 'plugins':["contextmenu", "dnd"], 'core' : { 'data' : [ 'Simple root node', { 'text' : 'Root node 2', 'state' : { 'opened' : true, 'selected' : true }, 'children' : [ {'text' : 'Child 1'}, […]

在EmberJS的选定列表项中分配'活动'类

我有一个列表,我想自动设置一个项目为class =“active”。 鉴于以下引导代码: <ul class="nav"> <li {{bindAttr class="atIndex:active"}}>{{#linkTo "index"}}Index{{/linkTo}}</li> <li {{bindAttr class="atAbout:active"}}>{{#linkTo "about"}}About{{/linkTo}}</li> <li {{bindAttr class="atLogin:active"}}>{{#linkTo "login"}}Login{{/linkTo}}</li> </ul> atIndex,atAbout和atLogin驻留在我的ApplicationController中。 呈现为: <ul class="nav"> <li class="active"><a…>Index{{/linkTo}}</li> <li><a…>About<a></li> <li><a…>Login<a></li> </ul> 使用Ember 1.0 pre4的最佳方法是什么? 我宁愿不添加特殊的代码到每个视图或控制器。 PS – atIndex: true作品,但atIndex: function() {return true; }.property().volatile() atIndex: function() {return true; }.property().volatile()不。 这让我觉得我做错了什么。 谢谢!

除了最后一个元素之外,如何在{{#each}}循环中的元素之间添加分隔符?

我有一个Handlebars模板,我试图从数组中生成逗号分隔的项目列表。 在我的Handlebars模板中: {{#each list}} {{name}} {{status}}, {{/each}} 我想要的,不要在最后一个项目上显示。 有没有办法在Handlebars中做到这一点,或者我需要回退到CSSselect器? 更新 :根据克里斯托弗的build议,这是我最终实现的: var attachments = Ember.CollectionView.extend({ content: [], itemViewClass: Ember.View.extend({ templateName: 'attachments', tagName: 'span', isLastItem: function() { return this.getPath('parentView.content.lastObject') == this.get('content'); }.property('parentView.content.lastObject').cacheable() }) })); 在我看来: {{collection attachments}} 和项目视图: {{content.title}} ({{content.size}}) {{#unless isLastItem}}, {{/unless}}

使用EmberData在本地存储器中caching远程数据

我有一个关于使用Ember加载和caching远程对象的问题。 我正在开发一个通过REST API使用服务器端存储的Ember应用程序。 一些获取的数据很less发生变化,因此每次应用程序加载时从服务器获取数据是不必要的。 但是,这也是一个需要离线工作的应用程序的问题,并仍然将其数据保存到服务器。 Ember Data有一个内置的存储适配器,用于通过REST API持久保存模型,并且还有一个适用于本地存储的适配器 (正如Ken所指出的那样)。 问题(如果是问题)是一个模型只有一个存储适配器,似乎没有任何caching提取的模型的概念,而不是将它们保存在内存中。 我在这个Ember的愿望清单以及Tom Dale对这个演讲的评论中发现了类似的要求,但我还没有发现任何迹象表明这是Ember中的一个现有function。 我有两个问题(第一个是重要问题): 什么是今天最好的方式 – 在本地存储中实现caching模型并根据需要与远程数据同步? 这是一个计划包含在Ember中的function,或者至less是维护者认为最终应该添加的东西? 当谈到1),我可以想到几个策略: a)扩展现有适配器并添加自定义远程同步机制: App.Store.registerAdapter('App.Post', DS.LSAdapter.extend({ // do stuff when stuff happens })); b)保持单独的模型类 – 一组用于远程对象,一组用于本地对象 – 并根据需要在它们之间进行同步。 有了标准的Todo案例: RemoteTodo –*sync*– Todo | UI 我有点希望这是一个真正的低调问题,并有一个良好的既定模式。 更新:find这个类似的问题 。 它有一个很好的答案,但这是一种理论。 我想我需要的是一些实际的提示或示例实现的指针。

ember.js和服务器

我在看Ember.js并阅读文档,试图了解如何使用它。 我明白了(非常好),除了一件事。 以我在MVC模式中思考的方式,Model是应用程序中数据的存储库。 我可以看到Ember.js中的客户端数据是如何工作的。 我没有得到的是如何将数据绑定到服务器,以便在客户端更改数据时,更改将在服务器中更新。 反之亦然。 我一直在做我的Web应用程序进行Ajax / JSON调用来回服务器,我只是没有得到如何使用Ember.js。

在使用Ember.js数据RESTAdapter时应如何处理错误?

ember-data.js: https : //github.com/emberjs/data/tree/0396411e39df96c8506de3182c81414c1d0eb981 总之,当出现错误时,我想在视图中显示错误消息,然后用户可以1)取消,这将回滚事务2)纠正input错误并成功提交事务,通过validation服务器。 以下是源代码片段。 它不包含错误callback。 updateRecord: function(store, type, record) { var id = get(record, 'id'); var root = this.rootForType(type); var data = {}; data[root] = this.toJSON(record); this.ajax(this.buildURL(root, id), "PUT", { data: data, context: this, success: function(json) { this.didUpdateRecord(store, type, record, json); } }); }, 总体而言,从服务器接收错误并更新视图的stream程是什么? 看起来,错误callback应该把模型置于isError状态,然后视图可以显示相应的消息。 此外,交易应该保持肮脏。 这样,事务可以使用rollback 。 看来,使用store.recordWasInvalid是朝着正确的方向,虽然。

Ember.js多个,命名出口使用

我有一个应用程序,它将有一个视图层分为三个部分: 侧边栏 工具栏左 工具栏右 我花了几个小时,试图find一些有用的谷歌,但我没有运气。 我需要一个简短而完整的应用程序示例,介绍如何使用Router和connectOutlet以及指定的sockets来完成此操作。 Thx在前面