2016-10-06 8 views
1

ビューが小さいため、@inlineView()を使用する単純なカスタム要素をAureliaに作成しましたが、インラインビューからVMのプロパティの1つにアクセスしようとすると、 "プロパティは定義されていません";@inlineViewからVMプロパティにアクセスできない

import {inlineView} from 'aurelia-framework'; 

@inlineView(`<template><h1>${title}</h1></template>`) 
export class MyCustomElement { 
    constructor() { 
     this.title = 'Hello, World!'; 
    } 
} 

これは@bindableでも発生します。 <template><h1>${title}</h1></template>が解釈される場合

export class MyCustomElement { 
    @bindable title = 'Hello, World!'; 

    constructor() { 
    } 
} 

答えて

4

、インタプリタはまだ存在しないtitle変数を補間しようとします。問題は、あなたがそれが渡される前に、$ {タイトル}を評価するためにJavascriptを引き起こしているあなたのinlineViewデコレータでリテラルテンプレートを使用しているある

@inlineView('<template><h1>${title}</h1></template>') // without accents 
+0

私はそれがどのように動作するかそれはだ知らなかった参照(これは私の最初のES6プロジェクトです)通常の引用符で少し迷惑を掛ける唯一のことは、テンプレート全体を1行にする必要があるということです。それ以上のものでなければ、それはそれ自身の 'html'ファイルに属している必要があります。 – powerbuoy

+0

Btw、この事をよく知っているあなたは[この他のAurelia関連の質問](http://stackoverflow.com/questions/39873585/unable-to-use-aurelia-plugin)を解決する方法を知っていますか? – powerbuoy

2

@inlineView(`<template><h1 innerHTML.bind="title"></h1></template>`) 

あるいはさらに簡単:これを試してみてくださいinlineViewデコレータ関数。その時点で、タイトルは存在しません。あなたはそうのようなテンプレート文字列の周りに(」または「)定期的な引用符を使用して、この例では通常の文字列を渡す必要があります!

@inlineView("<template><h1>${title}</h1></template>") 
関連する問題