0

** 编辑:抱歉,我的第一个示例不代表我拥有的代码。

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

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

我目前正在使用 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 // 这个片段被包装在一个 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 回答
0

德普。引导事件从未切换输入,因此没有任何改变。>.<

吸取的教训,bootstrap JS 和 angular 不能很好地结合在一起。使用 angular-ui-bootstrap,现在一切都很棒。

于 2014-05-14T02:23:05.830 回答