Ng-Repeat内部的Ng-Repeat(不是绑定到原始类型的问题)

时间:2014-05-13 01:04:36

标签: javascript angularjs ng-repeat angular-ngmodel

**编辑:道歉,我的第一个例子并不代表我的代码。

经过数小时和数小时的研究和测试后,我终于诉诸于此。

问题是:我无法在ng-repeat的子范围内更新控制器范围内的模型。我不是在对原语进行迭代,因为这似乎是这个问题的常见原因,而且,在尝试复制我的问题时,我正在做的事情似乎有效...任何帮助都将非常感激。

我目前正在使用Angular 1.2.16

首先:plunker

中的工作示例

第二:破碎的代码

'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 //这个snippit包装在一个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内部引用父作用域(虽然我不认为我应该提供我的数据),但无济于事。

我很困惑。从我的所有研究中,这应该是完全没问题的。并且相关联,在实践中起作用。

由于我遇到的奇怪现象,我只发布了一个单独的问题,并且因为之前的建议,主要是关于范围如何工作以及如何绑定到基元,似乎不是问题所在。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

<强>更新

看起来你刚刚使用了错误的单选按钮绑定。您可能打算绑定到object.description

,而不是绑定到object.config.game_type
<input ng-model="object.config.game_type" type="radio" ng-value="type.val">
...

Here is an update给你的傻瓜,表明绑定工作正常。


旧答案

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

答案 1 :(得分:0)

DERP。 Bootstrap事件并没有切换输入,因此没有任何改变。 &GT;。&LT;

经验教训,bootstrap JS和angular不能很好地融合在一起。使用angular-ui-bootstrap,一切都很棒。