小编wry*_*ych的帖子

如何从Ember的路线访问控制器?

从路线访问控制器有什么万无一失的方法吗?

<a href="#" class="btn" {{action "someAction" user}}>add</a>

App.ApplicationRoute = Ember.Route.extend
  events:
    someAction: (user) ->
      console.log 'give me name from currentUser controller'
Run Code Online (Sandbox Code Playgroud)

someAction非常通用,我认为ApplicationRoute是最好的选择.

javascript ember.js ember-router

28
推荐指数
2
解决办法
2万
查看次数

Ember-Data .find()vs .all() - 如何控制缓存?

有人告诉我,为了不一直提出请求,可以使用.all()方法加载存储在商店中的数据.但是Ember如何处理缓存?我有一些问题.

你如何控制缓存?什么时候使用.find()和.all().你使用.find()然后.all()吗?多长时间?

.all()是否有一些到期日期,以便在一段时间后它可以发出新的请求?或者它使用本地存储,以便我必须手动清除它?

假设我有一些数据,我想每周只刷一次?我该怎么办呢?现在,每次我进入或重新访问同一路线时,都会发出新请求.我怎么能避免这个?

ember.js ember-data

20
推荐指数
1
解决办法
1万
查看次数

如何将参数传递给Handlebars帮助器?options.hash和options.data之间有什么区别

这是一个典型的Handlebars助手:

Ember.Handlebars.helper 'myHelper', (value, options) ->
  ...
Run Code Online (Sandbox Code Playgroud)

根据这个protip,你可以将哈希传递给Handlebars助手.我查看了源代码,发现它提供了两者options.hashoptions.data.我有点困惑,因为这不会按预期工作:

{{#with controllers.currentCardCategory}}
  {{#each property in cardProperties}}
    <td class="td">{{cardProperty this property=property.symbol}}</td> 
  {{/each}}
{{/with}}
Run Code Online (Sandbox Code Playgroud)

this是目前的Card记录.在这里,我得到了property.symbol字符串

但这有效:

{{#with controllers.currentCardCategory}}
  {{#each property in cardProperties}}
    <td class="td">{{cardProperty this property.symbol}}</td> 
  {{/each}}
{{/with}}
Run Code Online (Sandbox Code Playgroud)

并且价值可以通过options.

但现在我不能这样做:

{{#with controllers.currentCardCategory}}
  {{#each property in cardProperties}}
    <td class="td">{{cardProperty this property.symbol anotherParam yetAnotherParam}}</td> 
  {{/each}}
{{/with}}
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何传递等参数,以辅助什么之间的区别options.hash,并options.data在助手

handlebars.js ember.js

14
推荐指数
1
解决办法
1万
查看次数

Ember对象和Ember数据之间的差异

Ember Objects和Ember Data之间有什么区别?我知道当服务器上有一些数据时我应该使用Ember Data模型,但是我应该在何时何地使用它们?

ember.js ember-data

12
推荐指数
1
解决办法
1383
查看次数

Handlebars助手和Ember Handlebars助手之间有什么区别?

我无法赶上普通车把和修改过的Ember Handlebars帮手所做的所有改变.如果我没记错的话,您可以使用以下方法注册帮助程序

  • Ember.Handlebars.helper
  • Ember.Handlebars.registerHelper
  • Ember.Handlebars.registerBoundHelper
  • Handlebars.registerHelper

这对我来说太过分了.你能解释一下这有什么区别吗?

handlebars.js ember.js

10
推荐指数
1
解决办法
2700
查看次数

@import'指南针'是否包含整个框架?

我开始在一个地方导入共享的东西,比如变量和mixin - css清单文件.现在我正在使用文件的直接路径导入一些Compass mixins.

我的问题是,如果使用@import 'compass'将整个框架注入application.css,还是通过查看sass文件中的引用然后只导入所需的mixins来完成?

我不想包括一切.

compass-sass

10
推荐指数
1
解决办法
9142
查看次数

应该在模型或控制器中声明计算属性吗?

拥有以下用户模型:

Sks.User = DS.Model.extend
  firstName: DS.attr("string")
  lastName: DS.attr("string")
Run Code Online (Sandbox Code Playgroud)

应该在哪里声明'fullName'计算属性?

  fullName: Ember.computed(->
    firstName = @get("firstName")
    lastName = @get("lastName")
    firstName = ""  if firstName is `undefined`
    lastName = ""  if lastName is `undefined`
    lastName + " " + firstName
  ).property("firstName", "lastName")
Run Code Online (Sandbox Code Playgroud)

它应该在'UsersController'中还是直接在模型中?Ember文档说只在会话中使用的字段应该写在控制器中.但问题是我无法访问索引模板中的'fullName':

Sks.IndexController = Ember.Controller.extend
  needs: ['users']
Run Code Online (Sandbox Code Playgroud)

在这里,'fullName'无法访问(在控制器中声明)

{{#each user in controllers.users}}
  <li>{{user.fullName}}</li>
{{/each}}
Run Code Online (Sandbox Code Playgroud)

但它是在模型中的时候.

ember.js ember-data

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

自定义Handlebars helper - 参数未解析

# here is CreditCards controller context
{{#with controllers.currentCardCategory}}
  {{#each property in cardProperties}}
    {{#is property.symbol 'your_savings'}}
      <td class="td">{{yourSavings}}</td>
    {{else}}
      <td class="td">{{cardProperty this property.symbol}}</td>
    {{/is}}
  {{/each}}
{{/with}}
Run Code Online (Sandbox Code Playgroud)

我动态创建表.所有内容都来自于ArrayController一个来自控制器的计算属性.symbol' field is underscored likeannual_fee'并且属于CreditCardProperty.每种卡类别都有不同的卡片属性.只有两个类别具有属性(类别具有许多卡属性),并且一个记录的computed字段设置为true.这意味着模板应该查找相应的控制器.

因为symbol(例如age_to_apply)与一个CreditCard字段(ageToApply)有关,我所能想到的就是使用cardProperty在上下文中接受当前卡的帮助器this并解析property.symbol,例如:

camelizedProperty = categoryProperty.camelize()
card.get 'camelizedProperty'
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想没有帮助程序,并以某种方式使用它:

# *** {{property.symbol}} should look up this context
#     and become e.g {{annual_fee}} or {{annualFee}} - is it possible?
{{#with controllers.currentCardCategory}}
  {{#each property …
Run Code Online (Sandbox Code Playgroud)

handlebars.js ember.js

4
推荐指数
1
解决办法
5055
查看次数

在Ember中为不同的表单输入进行内联/就地编辑

我们正在开发的应用程序中的视图已经在Handlebars/Emblem中编写,数据已经从模型中获取.

我想弄清楚在Ember中内联/现场的最佳方法是什么.问题:当没有点击任何内容时,数据只是一个文本.当您根据文本类型(日期,纯文本,项目列表)单击文本时,将替换相应的输入字段(日期字段,文本字段或选择),您可以对其进行编辑.

你有过这个问题的经验吗?如果是这样,请分享您的想法!

ember.js

2
推荐指数
1
解决办法
2280
查看次数