如何以角度动态设置模型名称?

时间:2016-02-09 09:50:22

标签: javascript angularjs

如何在ng-repeat循环中动态设置模型名称

    <div ng-controller="parentController">
      <div ng-ccontroller="childController">

         <div data-ng-repeat="category in categories">
           <label >{{category.name}}</label>

           <div class="radio">
             <label><input type="radio" name=? value="1" ng-model=?> value 1</label>
             <label><input type="radio" name=? value="2" ng-model="?"> value 1</label>
          </div>

        </div>

     </div>
   </div>

在上面我必须动态设置名称和ng-model值,只要发生循环,就像父控制器的 $ parent.cat0,$ parent.cat1,$ parent.cat2 一样。

我尝试了以下内容:

ng-model = '$parent.cat'+{{$index}}
         or
ng-model = "'$parent.cat1'+{{$index}}"
        or
ng-model = "$parent.cat"+{{$index}}

我尝试了以上的事情没有成功。是否有任何其他方法可以在角度js中动态设置模型名称。

我期待像这样的东西(在普通的HTML中给出)

<label>category1</label>
      <input type="radio" name ="cat1" value=0>value0</input>
      <input type="radio" name ="cat1" value=1>value1</input>
<label>category2</label>
      <input type="radio" name ="cat2" value=0>value0</input>
      <input type="radio" name ="cat2" value=1>value1</input>

4 个答案:

答案 0 :(得分:1)

在你的情况下应该是这样的:

 ng-model = "$parent.cat[$index]"

答案 1 :(得分:0)

除非使用指令,否则我认为你不能这样做。

但你可以这样:

$sql = "insert into `od_request` (`username`, `amount`, `status`, `date`) values ('$login_session', '$amount', 'Request', NOW())";

$ index由ng-repeat提供。 为了确保没有任何问题,您需要在parentController中正确初始化您的模型:

ng-model = "cat[$index]";

并非我不使用$ parent,因为如果你在parentController中正确初始化$ scope,则没有必要。

答案 2 :(得分:0)

ng-model指令接受表达式。这意味着您不必包括花括号。 这意味着你可以ng-model="$parent['cat' + $index]"

如果你有一个数组,那就是ng-model="$parent.cat[$index]"

答案 3 :(得分:0)

ng-repeat创建自己的范围,因此从ng-repeat $parent内部将引用childController,因此您需要执行$parent.$parent来访问parentController。你也可以使用&#39;控制器作为&#39;语法为您的范围命名,例如:

<div ng-controller="parentController as parentCtrl">
    <div ng-controller="childController as childCtrl">

        <div data-ng-repeat="category in categories">
            <label >{{category.name}}</label>

            <div class="radio">
                <label><input type="radio" name="{{parentCtrl['cat'+$index]}}" value="1" ng-model=""> value 1</label>
                <label><input type="radio" name="" value="2" ng-model="?"> value 1</label>
            </div>

        </div>

    </div>
</div>