私はAureliaカスタムエレメントを構築していますが、特別なバインディングビヘイビアを使用したいのですが、私はカスタムエレメントクラスの外で(宣言して)使用できないようです。また、バインディングビヘイビアやその他のカスタムメイドのためにAureliaにネームスペースが存在するかどうかは疑問でした。Aureliaカスタム要素とそれ自身の名前空間にバインディング動作を追加する方法は?
ここで私は
オプション-binding.js使用したいの結合挙動だ - 私はインポートをこのように試してみましたcode provided by another stack question
export class OptionalBindingBehavior {
bind(binding, scope, interceptor) {
binding.originalupdateTarget = binding.updateTarget;
binding.originalTargetProperty = binding.targetProperty;
binding.updateTarget = val => {
if (val === undefined || val === null || val === '') {
binding.targetProperty = null;
} else {
binding.targetProperty = binding.originalTargetProperty;
}
binding.originalupdateTarget(val);
};
}
unbind(binding, scope) {
binding.updateTarget = binding.originalupdateTarget;
binding.originalupdateTarget = null;
binding.targetProperty = binding.originalTargetProperty;
binding.originalTargetProperty = null;
}
}
は
index.js
import {MyCustomElement} from './my-element';
import './optional-binding.js';
export function configure(aurelia) {
aurelia.globalResources('./my-element');
}
export {
MyCustomElement
};
また、import './optional-binding.js';
のカスタム要素内に直接試行されましたが、すべての場合において、このバインディングが見つからないと言っています。
他のコード/プロジェクトによってグローバルに宣言される可能性があるカスタムバインドビヘイビアとの名前の衝突を避けるために、これを独自のネームスペース(可能な場合)にする方法も知りたいと思います。
EDIT
私はrequire
と結合挙動をインポートする@janmvtrinidadの提案を試みたが、私はViewModelににそれをインポートしようとしたときに前に持っていたように私は、同様の結果を得ることができます。また、私のすべてのファイルは同じディレクトリにあるので、./
を使用すれば十分です。これまでのところ、カスタム要素と同じファイルの中でバインディング動作を宣言することに固執しています。これはこれまでのところ唯一の方法です。カスタム要素ビュー(テンプレート)の内部
<template>
<require from="./optional-binding"></require>
...
私はそれは私も解放それ
Cannot find module './aurelia-bootstrap-select/optional-binding'
コード全体/プロジェクト
を見つけることができないというエラーが出ますあなたはコード全体を見たい場合は、このプラグインをコミュニティにいくつか前に、プラグインはAurelia-Bootstrap-Selectとして利用可能です。現在、誰かがそれを使いたいとしていて、またOptionalBindingBehavior
を持っているなら、名前の衝突が起こるでしょう、それは酷いことです。
NOTE私は懸賞金を計上した後も
、私はまだアウレリアで名前の衝突を避けるために、名前空間を扱う正しい方法をお待ちしております。
こんにちは@ghiscoding私はViewEngineコードで、どのようにaureliaがdependecyで動作するかを調べています。すべてのテンプレートは独自のviewResourcesを持っているように見えるので、テンプレートにテンプレートが必要なときに機能し、リソースを使用するときにはより高い順序を持つはずです。また、あなたと一緒に働くのと同じシナリオを試してみました。 – janmvtrinidad
@janmvtrinidad私と他の人を助ける有効な答えを見てうれしいです。私はあなたの答えを受け入れることがうれしいです。 – ghiscoding