(私の英語でごめんなさい:)
次のようなAngularUIui-select2ディレクティブを使用して、フォームでSelect2を使用しています。
<input ng-model="city" type="text" ui-select2="setupCitySelect" />
ここで、setupCitySelect-select2オプションを持つオブジェクト。私は彼を適切な範囲に設定しています
$scope.setupCitySelect = {
allowClear: true,
minimumInputLength: 2
...etc, about 50 SLOC
}
すべて正常に動作します。しかし、たとえば、ページ(またはページの一部)に5つのselect2要素(CitySelect、UserSelect、ConditionSelectなど)がある場合、大量のコードを取得しますが、それらのほとんどは同じです。AngularUIは「グローバルデフォルト」を提供します。したがって、繰り返しコードを(ディレクティブで)移動できます。
var dirs = angular.module('vipc.directives', ['ui']);
// defaults setting for UI
dirs.value('ui.config', {
select2: {
allowClear: true,
minimumInputLength: 2,
formatInputTooShort: function(term, minLenght) {
var rest = minLenght - term.length;
return "minimum: "+rest;
},
...etc.
しかし、まだコントローラーでいくつかの作業が必要です。ajax-urlなどの一意のプロパティを設定するためです...そして、それはいくつかのページ、いくつかのコントローラーで提供されています。ああ...はい、これを1つのファイル(common.jsなど)に入れることができます。しかし、私は思う-それは最善の方法ではない。アングラスは言う:「指令を使う、ルーク!」しかし、どのように?複雑すぎるドキュメント。ドキュメントを読みました。3回。成功せずに。私はいくつかの簡単なdirを書きましたが、これは...上記の検索形式とモーダル形式で「分離された」スコープ(ページの2 CitySelectにすることができます)が必要でした。コンパイル機能?リンク機能?
必要なのはただ
<myapp-city-select id="city"></myapp-city-select>
<myapp-user-select></myapp-city-select>
...later, same html file
<myapp-city-select id="city2"></myapp-city-select>
誰かが助けることができますか?