我正在渲染一个模板并将一些选项传递给它。在其中一个我有这个代码:
export const AppRoutes: Routes = [
...
{
path: '/one',
component: OneComponent,
resolve: {
foo: 'foo'
}
}
];
我发现只有@Component()
export class OneComponent implements OnInit {
foo;
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.foo = this.route.snapshot.data['foo'];
}
}
内的第二个代码执行,如果我复制第一个func getAllMangaPage() -> Observable<String>{
return Observable.create { observer in
var urls :[String] = []
let subs = self.repeatEvery(second: 0.2)
.subscribe { event in
if urls.isEmpty {
urls.append(self.popularMangaInitialUrl())
}else{
self.getNextPageUrl(currentStringUrl: urls.last!)
.subscribe(
onNext: { url in
var nextUrl = url as String
if !nextUrl.contains("http://") {
let completeUrl = "\(self.popularMangaInitialUrl())\(nextUrl)"
if !urls.contains(completeUrl){
urls.append("\(self.popularMangaInitialUrl())\(nextUrl)")
observer.onNext(urls.last!)
}
}else{
if !urls.contains(nextUrl){
urls.append(nextUrl)
observer.onNext(urls.last!)
}
}
},
onCompleted: {
},
onDisposed: {
}
)
}
}
return Disposables.create {
print("Disposed")
subs.dispose()
}
}
}
并在第二个main: "#{ @comp[:contentItem]
unless Regex.match?(~r/width:/, to_string @comp[:contentItem])
do "width: 165px;" end
unless Regex.match?(~r/height:/, to_string @comp[:contentItem])
do "height:65px;" end
}"
之后重复它,那么似乎有一个在unless
之后立即运行代码的问题
我尝试过使用unless
和其他组合而没有运气。
答案 0 :(得分:3)
如果在这样的字符串插值中添加多个代码块,则忽略除最后一个之外的所有代码块。 Elixir也会对此显示警告(可能eex
没有):
iex(1)> "#{1
...(1)> 2
...(1)> 3}"
warning: code block contains unused literal 1 (remove the literal or assign it to _ to avoid warnings)
iex:1
warning: code block contains unused literal 2 (remove the literal or assign it to _ to avoid warnings)
iex:1
"3"
修复是使用3个单独的插值。对于您的代码,这应该有效:
main: "#{@comp[:contentItem]}\
#{unless Regex.match?(~r/width:/, to_string @comp[:contentItem]) do "width: 165px;" end}\
#{unless Regex.match?(~r/height:/, to_string @comp[:contentItem]) do "height:65px;" end}"
我最后使用\
来确保在3个表达式之间没有插入额外的空格。
编辑:正如@cdegroot指出的那样,将这种复杂的逻辑添加到模板被认为是一种可怕的做法。您应该在相关视图,控制器,模型或单独的模块中执行此计算。它被认为是拥有尽可能简单模板的最佳实践,通常只是循环并打印出分配/地图/结构的字段。