0

** 編集: 私の最初の例は、私が持っているコードを代表するものではありませんでした。

何時間もの調査とテストの後、私は最終的にこれに頼っています。

問題は、ng-repeat の子スコープ内からコントローラー スコープのモデルを更新できないことです。それがこの問題の一般的な原因であるように思われるため、プリミティブを繰り返し処理していません。さらに、repl で私の問題を再現しようとすると、私がしていることはうまくいくようです...どんな助けも大歓迎です。

現在Angular 1.2.16を使用しています

最初: plunkerでの作業例

2 番目: 壊れたコード

'use strict';
angular.module('myApp')
.controller('myController', [ '$scope', function ($scope) {

    $scope.object = {
        description: '',
        config: { 
            game_type: ''
        }
    };

    $scope.data = { 
        'game_types': [
            {'key': 'meow', 'val': 2},
            {'key': 'meow1', 'val': 3},
            {'key': 'meow2', 'val': 4}
        ]
    };
}]);

HTML // このスニピットは ng-app にラップされていますが、含まれていません

<div ng-controller="myController">
  <div class="row">
    <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
      <h4>Description</h4> 
      <input class="form-control" ng-model="object.description" placeholder="Enter a Description" type="text" />
    </div>
  </div>
  <div class="row">
    <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
      <h4>Contest Type</h4>
      <hr>
      <div class="row">
        <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
          <div data-toggle="buttons">
            <label ng-repeat="type in data.game_types" class="btn btn-block btn-primary">
              <input ng-model="object.description" type="radio" name="game_type" ng-value="type.val">{{ type.key }}
            </label>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

また、ng-repeat 内から直接親スコープを参照しようとしましたが (ただし、データを提供する必要はないと思います)、役に立ちませんでした。

私は非常に混乱しています。私のすべての調査から、これはまったく問題ないはずです。そして、リンクされているように、実際に機能します。

私が経験している奇妙さのために、別の問題を投稿しているだけです.以前の提案は、主にスコープの動作とプリミティブへのバインドに関するものであり、問​​題ではないようです.

ご協力いただきありがとうございます。

4

2 に答える 2

1

アップデート

ラジオ ボタンに間違ったバインディングを使用したようです。にバインドする代わりにobject.description、おそらく次のようにバインドするつもりでしたobject.config.game_type:

<input ng-model="object.config.game_type" type="radio" ng-value="type.val">
...

これはplunkrの更新で、バインディングが機能していることを示しています。


古い答え

ng-controller追加する要素とネストされた要素にのみ適用されます。したがって、これらはすべてカバーされています:

<div class="row" ng-controller="myController">
  <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
    <h4>Description</h4> 
    <input class="form-control" ng-model="object.description" placeholder="Enter a Description" type="text" />
  </div>
</div>

残りの要素を機能ng-controllerさせるには、 などの周囲の要素に追加しbodyます。

于 2014-05-13T01:59:20.330 に答える