如果我在Angular中定义单选按钮过滤器,如下所示:
<input type="radio" ng-model="filter.type" value="rose" class="type-filter"> Rose<br>
<input type="radio" ng-model="filter.type" value="tomato" class="type-filter"> Tomato<br>
用于显示数据的ng-repeat是:
<div ng-repeat="node in allnodesFiltered | filter:{ plantArray: filter.type}" class="row product-item">
{{node.title}}
过滤效果很好。但是,如果我尝试在过滤器中使用ng-repeat,如下所示:
<div ng-repeat="plant in plantFilters">
<input type="radio" ng-model="filter.type" ng-value="filter" class="type-filter"> Grass
{{plant}}
</div>
我收到错误:
TypeError: Cannot create property 'type' on string 'rose'
at fn.assign (eval at <anonymous>
以下是json数组中项目的示例:
title: "Euismod Lucidus Oppeto Probo",
body: "Abico adipiscing facilisi nunc singularis sudo. Antehabeo humo melior neo obruo ulciscor voco. Aliquam commoveo ea mauris nutus os saepius zelus. Brevitas dolus uxor. Ad cogo decet nobis nutus obruo olim turpis venio virtus. Damnum dignissim lobortis meus mos plaga. Eros iriure loquor macto natu paulatim vel. Consequat humo jus nulla. Abico conventio ibidem si tum typicus uxor volutpat. Diam nutus uxor ymo. Abluo caecus imputo loquor lucidus macto nibh obruo usitas.",
Path: "public://product-images/imagefield_THXgQg.jpg",
productType: "Compost, Weedkiller",
plant: "Rose, Tomato"
答案 0 :(得分:3)
错误本身就是说你正在尝试在字符串上创建一个属性。在你的情况下,如果数组是一个JSON对象&#34;数组,那么ng-repeat将按你的意愿工作。 (不是json文本)。当您为ng-repeat准备数组时,您将json对象推入数组而不是json文本。
var jsonObject = JSON.parse(text);
答案 1 :(得分:1)
我设法解决了这个问题。在ng-model中,你可以像这样引用父母:
ng-model="$parent.filter.type"
如果有人能说出这是如何运作的,我会很高兴。但感谢输入Akhilesh Jaiswal
答案 2 :(得分:1)
如果将变量实例化为字符串而不是对象,则此错误也会出现:
var myObject = " "; //this will launch the error
和
var myObject = {}; //this will work