私は Mithril を初めて使用しますが、適切なコーディング パターンと関心の分離を強制する方法に非常に満足しています。これを参考に、m.component()を多用してコーディングを始めました。
後で、トランスフォーマー関数の書き方を説明しているミスリルの記事「CSS があなたを失望させるとき」( http://lhorie.github.io/mithril-blog/when-css-lets-you-down.html ) を読みました。仮想DOMツリーをトラバースして操作します。いくつかの種類の分野横断的な関心事を書く素晴らしいコンセプト。
しかし、コンポーネントを含む VDOM でこのパターンを使用しようとすると、m.component が VDOM-Object ではなくコンポーネントを返すため、機能しません。この時点では埋め込みビューが構築されていないため、コンポーネントを検出しても役に立ちません。
今、私はこの問題をどのように処理するか、または何か根本的に間違っているかどうかを自問しています...
問題を示す数行のコードを次に示します。
...
someComponent.view = function() {
return m('html', [
m('body', [
m('div', [
m.component(anotherComponent)
])
])
};
...
// and now the traversal function from the mithril side
var highlightNegatives = function (root, parent) {
if (!root) return root;
else if (root instanceof Array) {
for (var i = 0; i < root.length; i++) {
highlightNegatives(root[i], parent);
}
} else if (root.children) {
highlightNegatives(root.children, root);
} else if (typeof child == "string" && child.indexOf("($") === 0) {
parent.attrs.class = "text-danger";
}
return root;
};
highlightNegatives(someComponent.view()); // will not find the relevant elements in "anotherComponent"
他の人はその問題をどのように処理しますか?