indexOf(model.object)而不是indexOf(model)不按预期工作

时间:2014-10-22 21:11:41

标签: javascript angularjs

我想列出商店中的用户。当我使用下面的用户模型时,这是100%工作。

// Model
store : { type: Array },

然后是每个商店的单选按钮。

<!-- Button for 'all' users -->
<label class="btn-l33t" ng-model="radio.model" btn-radio="allstores">
  {{global.user.company || 'null'}}
</label>

<!-- Button that filters users by store. 100% working -->
<ul>
  <li ng-repeat="store in global.user.store">
    <label class="btn-l33t" ng-model="radio.model" btn-radio="store">
     {{store}}
    </label>
  </li>
</ul>

最后是用户表

<!-- Show user if store is in user.store -->
<!-- 100% working -->
<tr ng-show="user.store.indexOf(radio.model) != -1 || radio.model === allstores" data-ng-repeat="user in users">

所以现在我改变了我的模型。 stores数组接受一个对象,因此我们可以在商店中包含部分。

store: {
  type: Array,
  thing: {
      name: String,
      section: Array,
  }
},

此用户列表工作正常,但用户表不再进行过滤。检查单选按钮什么都不做。我更新了单选按钮,它们显示了商店名称&amp;完美的部分。

<label class="btn-l33t" ng-model="radio.model" btn-radio="allstores">
  {{global.user.company || 'null'}}
</label>

<ul>
  <li ng-repeat="store in global.user.store">
    <label class="btn-l33t" ng-model="radio.model" btn-radio="store">
      {{store.name}} <!-- changed {{store}} to {{store.name}} -->
      <!-- for some reason it's store.name and not store.thing.name -->
    </label>
    <!-- added sections. This is working fine -->
    <ul>
      <li ng-repeat="section in store.section" >
        <label class="btn-l33t" ng-model="radio.model2" btn-radio="section">
          {{section}}
        </label>
      </li>
    </ul>
  </li>
</ul>

我遇到问题的是列出用户的表格。不知道该把它放在这里解决它。

<tr ng-show="user.store.thing.name.indexOf(radio.model.name) != -1 || radio.model === null" data-ng-repeat="user in users">

编辑/更新:这就是我添加商店的方式:

var obj ={ 
   name: $scope.datStore.name, 
   section: ["grocery","utensils"]
}
user3[0].store.push(obj);

也许这就是stores.name有效的原因,而不是stores.thing.name。但是,不应该更新模型吗?由于某种原因,模特接受了这一点。

1 个答案:

答案 0 :(得分:0)

根据您的最新动态,store具有以下结构:

store: [
        {name:'name1', section:['section1', 'section2']}, 
        {name:'name2', section:['section3', 'section4']}
       ]

因此,我认为您想要做的是:

<tr ng-show="!radio.model || (user.store|filter : {name : radio.model.name}).length > 0" data-ng-repeat="user in users">