ng-model不会在ng-repeat中绑定,而其他所有内容都会

时间:2017-08-04 15:54:13

标签: javascript angularjs angularjs-ng-model ng-bind

我知道关于这个话题已经有很多问题了,我尝试了我找到的解决方案,但它似乎没有用。 基本上我有这个名为basicMunch的指令,它通过一个对象数组并创建一些html。 一切都很好,并绑定除了ng-modal之外 以下是该指令的代码:

>     munches.directive('basicmunches', function() {   return {
>     require: 'ngModel',
>     template:`<div class='columns'>  <div ng-repeat="mu in basicMunches" class="card column col-4 col-sm-12">
>           <div class="card-header">
>             <h4 class="card-title">{{mu.name}}</h4>
>             <h6 class="card-subtitle">{{mu.type}}</h6>
>           </div>
>           <div class="card-body">
>             {{mu.text}}
>           </div>
>           <div class="card-footer">
>             <div class="form-group">
>               <label class="form-switch">
>                 <input ng-model="mu.tag" name="{{mu.tag}}"  type="checkbox" />
>                 <i class="form-icon"></i> Turn On
>               </label>
>             </div>
>           </div>
>         </div></div>`   } });

这是数组:

 $scope.basicMunches  = [
    {"name":"The New York TImes",
     "text":"Get the top headlines from the NYT every morning", 
     "type":"News", "tag":"nyt"
    },
    {"name":"Wall Street Journal",
     "text":"Get the top headlines from the WSJ every morning", 
     "type":"News", "tag":"wsj"
    }
];

这是我在控制台中看到的内容 enter image description here

我已经尝试过使用$ parent.mu.tag和$ parent。$ parent.mu.tag,但是它没有用,因为它没有嵌套在其他范围内(至少不是我所知道的)

我尝试使用controller.mu.tag的名称,它也不起作用

我尝试过mu [&#39; tag&#39;]并且无法正常工作

我尝试使用{{并且不起作用 我将其更改为ng-bind = {{mu.tag}},这确实有效 我很奇怪它适用于ng-bind但它对ng-model不起作用.... 无论如何,任何人都有任何想法?

2 个答案:

答案 0 :(得分:1)

您似乎想要的是将ng-model属性绑定到mu.tag,而不是mu.tag本身。

由于解析ng-model的方式,您需要使用括号语法的变体来实现此目的。这里正确的语法是$parent[mu.tag],它将在$parent对象上查找由mu.tag的值命名的属性。 ng-repeat的父级为$scope,因此最终会在正确的对象上显示该属性。

<input ng-model="$parent[mu.tag]" name="{{mu.tag}}"  type="checkbox" />

http://plnkr.co/edit/RZNDa2XVUoZp1z7QeN46?p=preview

答案 1 :(得分:1)

让复选框输入用property accessor bracket notation填充对象的属性:

Value

The DEMO

&#13;
&#13;
//...
double lastRow = range.Rows.Count;
bgw.ReportProgress(-1, lastRow); // Just to set the Maximum value
//...

//...
//int ultimaRiga = (int)lastRow;
//int percents = (i * 100) / ultimaRiga;
bgw.ReportProgress(i); // Just send the actual value / step
//...

//...
void bgw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
    if (e.ProgressPercentage == -1)
    {
        progressBar1.Maximum = (int)e.UserState;
        progressBar1.Value = 0;
    }
    else
        progressBar1.Value = e.ProgressPercentage;
}
//...
&#13;
<fieldset ng-repeat="mu in munchies">
    <input ng-model="choices[mu.tag]" name="{{mu.tag}}"
             type="checkbox" />
      &nbsp;  Turn On
</fieldset>
&#13;
&#13;
&#13;