-12

質問の曖昧さが問題の一部だと思うので、私の本当の最初の質問は、Angular で何と呼んでいるのかということです

私が名前を付けようとしているのは、単一のオブジェクトのモデルに対するビューとコントローラーです。私はそれを何と呼ぶべきかさえ知りません。事前に必要になることがわかっているものについては、ディレクティブを作成してきましたが、ディレクティブが作成するものの 1 つのインスタンスを何と呼びますか?

突然 (何らかの外部イベントに応答して)、モデルに新しいオブジェクトがあり、それを画面に表示したいという状況がいくつかあります。Angularは、可能なすべてのビューを最初から親ビューにリストすることを望んでいるようですが、それは私の場合はあまり合理的ではありません。たとえば、すべてのポップアップやツール ヒントなどを一覧表示するにはどうすればよいでしょうか。

私はいくつかの小さなエッジケースでダウンしており、コントローラーコードの奥深くにあり、現在のビューに何かを追加する必要があります。受け入れられている慣行は何ですか。

ちなみに、$route/ng-view はまさにこの例の 1 つです。ng-view を含むビューと ng-view DIV 自体は、$route モジュールが ng-view に何を配置しようとしているのかわかりません。この戦略のより一般的なケースが必要です。

編集

人々は例を求め続けます。これはどうですか: 機器の要求アプリを作成しています。ユーザーが 1000 種類の機器のうちの 1 つを彼に送るように依頼した場合、その種類に固有の追加情報を収集するポップアップを表示する必要があります。彼がドライバーを要求すると、ポップアップで刃のサイズ、首の長さ、ハンドルの構成について尋ねられます。彼が飛行機を頼んだら、エンジンのサイズ、燃料タンク、座席配置について尋ねる魔法使いになります。アプリが起動時に認識しているのは、すべての機器タイプのリストと、特定のタイプごとに後続のすべての情報を収集する UI 要素の名前だけです。

4

4 に答える 4

2

私はいくつかの小さなエッジケースでダウンしており、コントローラーコードの奥深くにあり、現在のビューに何かを追加する必要があります。受け入れられている慣行は何ですか。

どこかで、必要なすべてのビューを定義する必要があります。たとえば、すべての機器のポップアップです。各ビューを個別のファイルに入れ、ng-include を使用して、現在表示する必要があるビューを動的に取り込むことができます。$scope でプロパティを定義します (例: $scope.equipmentTypeViewUrl)。

<div ng-include src="equipmentTypeViewUrl"></div>

ng-view はページごとに 1 回しか表示できないため、複数レベルのルーティングが必要な場合は、おそらく ng-include を使用する必要はありません。

こちらもご覧ください

于 2012-12-22T20:51:37.580 に答える
0

これらすべてが元のオブジェクト (プロパティまたはその他の方法) に関連している場合は、データをループしてプロパティを表示し、必要に応じてラベルのキーとフィルターを使用できます。私見それは実際には角度のない質問ではなく、データ構造の場合はより多くの質問です。適切なデータ構造がある場合は、関連するデータ オブジェクトを作成するサービスを使用できます。

関連するポップアップの場合、ディレクティブを使用して、そこでモデル データを処理することもできます (構造が一貫している場合にのみ推奨されます)。

このアプローチが気に入らない場合は、テンプレートでデータを直接処理できます。

しかし、より具体的な詳細がなければ、明確な答えはありません。

于 2013-02-28T23:40:57.627 に答える
0

問題は、コントローラーで「もの」を作成する必要があると考えていることだと思いますが、実際にはそうではありません。双方向のデータ バインディングが機能する方法は、何らかの属性値を変更することであり、それに基づいてビューが変更されます。ポップアップやツールチップがあるにもかかわらず、それだけでは不十分なユースケースは見たことがありません。

ただし、コントローラーに何かを表示させる必要がある場合は、角度のイベントを利用してそれを行うことができます。内容を表示する (DOM を変更する) ディレクティブと、コントローラーの 2 つの部分が必要になります。コントローラーは、いくつかのパラメーターを使用してイベントを $broadcast し、ディレクティブは $on を使用してこれらのイベントをリッスンし、それに応じて反応します。

于 2012-05-09T22:44:38.823 に答える
0

モデルとして役立つコードが入っていることを確認したいだけです...

<div class="row" ng-repeat="attribute in attributes">
    <div class="widget" ng-repeat="input in attribute.inputs">
        <input type="{{input.type}}" ng-model="input.value" />
    </div>
</div>

私の知識は非常に限られていますが、私が知っているのは、モデルに明確な構造があれば、それに動的に反応するビューを構築できるということだけです。

于 2013-02-22T01:58:47.200 に答える