5

我正在使用 Angularjs 和 Slim,但我试图弄清楚如何提出更简洁的语法。

我想要做:

td {{content.name}}
td {{content.body}}
td {{content.owner}}

但这给了我一个错误。很可能是因为{用于对 HTML 属性进行分组。我不得不将其更改为:

td
  | {{content.name}}
td
  | {{content.body}}
td
  | {{content.owner}}

有没有更清洁的方法来做到这一点?

4

5 回答 5

6

允许这样做的更改是在 slim 版本 2.0.3 中。

您可以在中添加以下内容config/initializers/slim.rb

Slim::Engine.set_options :attr_list_delims => {'(' => ')', '[' => ']'}

{这从默认值中删除。请参阅此处的文档并在页面上搜索attr_list_delims.

于 2015-02-21T17:57:33.257 回答
4

我不确定您是否认为它更干净,但您可以将所有属性放在括号中。

td() {{content.name}}
td(otherattr=2 thisattr=3) {{content.body}}
td() {{content.owner}}
于 2013-07-20T01:27:10.527 回答
3

我最终修补了 Slim gem 本身。仅更改了 2 行。

你可以在https://github.com/brennancheung/slim/tree/angularjs_support看到它

并且可以使用以下方法将其包含在您的 Rails 项目中:

gem 'slim', :git => 'git://github.com/brennancheung/slim.git', :branch => 'angularjs_support'
于 2013-07-29T22:57:59.380 回答
1

I know this is an old question, but there is a perfect solution now. The latest slim supports custom attr_delims options. I don't know when it was added, but v2.0.3 has that. With command line, you can use:

slimrb -o "attr_delims={'(' => ')', '[' => ']'}" <file>

Or if you use gulp-slim, you can write it like this:

.pipe(slim({
  pretty: true,
  options: "attr_delims={'(' => ')', '[' => ']'}"
}))

You can refer to the doc here.

于 2014-11-01T11:45:06.830 回答
0

在其他变体上,但我仍然不满意,是:

td ng-bind="content.name"
td ng-bind="content.body"
td ng-bind="content.owner"

我倾向于自定义 slim 以便它不{用于对 HTML 属性进行分组。

于 2013-07-19T23:34:19.980 回答