1

Angular ルート、コントローラー、サービスなどを追加して、この JsFiddle コードを改善しようとしています。 http://jsfiddle.net/ProLoser/bp3Qu/light/

私が直面している問題は、次のコード行にあります

function FormBuilderCtrl(){
var scope = this;
....

上記をこの新しいフィドルhttp://jsfiddle.net/uhsarp/MdvQk/1/に変換しようとしたとき

function FormBuilderCtrl($scope){
...

今、すべてが壊れます。var scope=this の意味と、スコープを関数に渡すことが機能しない理由を理解しようとしています。

また、すべての Angular ディレクティブは ng- ではなく ng: として宣言されます (例: ng-switch ではなく ng:switch)。それらは同等ですか?ありがとう。

アップデート:

回答からのアドバイスに従い、Angular バージョンをアップグレードしました。var scope = this も削除し、スコープを直接注入しました。 http://plnkr.co/edit/Clr2T9V8J0z3oxW2HXur?p=preview

私が今直面している唯一の問題は、フィールド タイプを「テキスト」から「ラジオ ボタン」に変更するたびにエラーが発生することです (上記の plukr ページの script.js の 45 行目)。

TypeError: Cannot call method 'indexOf' of undefined

コードを確認しましたが、問題を特定できないようです。

4

3 に答える 3

1

非常に古いバージョンの Angular を実行しています。

私はあなたのフィドルをフォークし、バージョンを最新の安定版に更新し、モンキーはあなたのスクリプトにパッチを当てました:

  1. 意図したとおりに $scope を注入します
  2. scope = $scope を設定したので、コード全体で置き換える必要はありません。

すなわち:

   function FormBuilderCtrl($scope){
     var scope = $scope;

スパゲッティコーディングを避けることで開発を楽にするためのいくつかのアドバイス:

  • 別のファイルを使用する
  • モジュールを作成し、コントローラー/ディレクティブを追加します。
于 2013-09-17T19:31:12.937 に答える