質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Riot.js

Riot.jsは、React.jsに似たコンポーネント指向なJSフレームワークです。非常に軽量であり、コンポーネントで設計しやすいといったメリットがあります。また、MVCのように分割できることも特徴です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

3620閲覧

Riot.jsのMixinの使い方

退会済みユーザー

退会済みユーザー

総合スコア0

Riot.js

Riot.jsは、React.jsに似たコンポーネント指向なJSフレームワークです。非常に軽量であり、コンポーネントで設計しやすいといったメリットがあります。また、MVCのように分割できることも特徴です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2016/09/22 00:20

編集2016/09/22 22:02

このページなどを見ながらタグ間でオブジェクトを共有しようとしているのですが、うまくいきません。

・現状テストしているコード
・エラー箇所
・エラーメッセージ
は以下の通りです。
どこが間違っているのかご指摘お願いします。

javascript

1//aaa.tag 2var BodyMixin = [ 3 {"tag": "h2", "class": "subheading", "main": "How to makeup"}, 4 {"tag": "p", "class": "text", "main": "First"}, 5 {"tag": "div", "class": "image", "main": "<img src=data:image/png;base64,iVBORw0KGgoA>"} 6] 7riot.mixin('bodyMixin', BodyMixin)//BodyMixinをbodyMixinとしてグローバルオブジェクトに登録

javascript

1//bbb.tag 2this.mixin('bodyMixin')//グローバルオブジェクトに登録したbodyMixinをbbb.tagの中でロード 3console.log(bodyMixin)

エラー箇所:bbb.tagの一行目
エラーメッセージ:Uncaught Error: Unregistered mixin: bodyMixin

【追記】

グローバルに登録したいオブジェクトをtagの中ではなく、各モジュールを読み込むmain.js内に記述したら、bodyMixinをbbb.tagの中でロードではエラーは出なかったが、2行目で「Uncaught ReferenceError: bodyMixin is not defined」のエラーが発生してしまいました。

これはどういうことなのでしょうか?

javascript

1//main.js 2import riot from 'riot' 3import './header.tag' 4import './eyecatch.tag' 5import './titleToKeyword.tag' 6import './bodyText.tag' 7import './raw.tag' 8 9var BodyMixin = [ 10 {"tag": "h2", "class": "subheading", "main": "How to makeup"}, 11 {"tag": "p", "class": "text", "main": "First"}, 12 {"tag": "div", "class": "image", "main": "<img src=data:image/png;base64,iVBORw0KGgoA>"} 13] 14riot.mixin('bodyMixin', BodyMixin) 15 16riot.mount('header') 17riot.mount('eyecatch') 18riot.mount('titleToKeyword') 19riot.mount('bodyText') 20riot.mount('raw')

javascript

1//bbb.tag 2this.mixin('bodyMixin')//グローバルオブジェクトに登録したbodyMixinをbbb.tagの中でロード成功 3console.log(bodyMixin)//Uncaught ReferenceError: bodyMixin is not defined

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

bodyMixinを読み込んでも、bodyMixinという名前のオブジェクトが追加されるわけではなく、bodyMixinの「中身」が追加されます。

javascript

1var BodyMixin = [ 2 {"tag": "h2", "class": "subheading", "main": "How to makeup"}, 3 {"tag": "p", "class": "text", "main": "First"}, 4 {"tag": "div", "class": "image", "main": "<img src=data:image/png;base64,iVBORw0KGgoA>"} 5] 6riot.mixin('bodyMixin', { 7 bodyMixin: BodyMixin 8})

とすればOKです。

投稿2016/09/22 21:52

syuilo

総合スコア393

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/09/22 22:04

ご回答ありがとうございます。 中身が追加されるということ知りませんでした。 ただ、いただいた通りに実行してみてもbbb.tagの2行目で同じbodyMixin is not definedのエラーが出てしまいました。 他にどこか誤りはありますでしょうか?
syuilo

2016/09/22 22:08

console.log(this.bodyMixin) でどうですか?
退会済みユーザー

退会済みユーザー

2016/09/22 22:13

確かにthisが必要でした。。 しっかり表示できました! この部分で1日ずっと考え込んでしまっていたので、本当に助かりました。 ありがとうございます!! あともう一点だけご質問させていただきたいのですが、グローバルオブジェクトに登録するBodyMixinなどの記述はaaa.tagなどのタグ内に記述することはできないのでしょうか? (上記質問の追記の上のパターンです)
syuilo

2016/09/22 22:17 編集

そうですね、タグ内にグローバルなMixinを定義することはできません。追記してくださったように、各モジュールを読み込むmain.jsのような部分に記述する必要があります。 (できないこともないかもしれないけど(設計的に)やばそう)
退会済みユーザー

退会済みユーザー

2016/09/22 22:19

やはりそうなのですか。 ご丁寧かつ迅速に対応いただき、本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問