我正在过滤指令中的对象中的列表项,如下所示:
link: function (scope, elem, attr, controller) {
var matches = {};
var original = clone(controller.items);
scope.$on('ecal:searchbox-valuechanged', function (event, message) {
for(var key in original) {
if (coriginal.hasOwnProperty(key)) {
for(var i=0; i < original[key].length; i++) {
if (original[key][i].name.indexOf(message.data.search) >= 0) {
matches[key] = original[key];
};
}
}
}
controller.items = matches;
});
function clone(obj) {
if (null == obj || "object" != typeof obj) return obj;
var copy = obj.constructor();
for (var attr in obj) {
if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr];
}
return copy;
}
}
问题在于,controler.items
最初是空的,等待服务更新其数据,当编译指令时,original
变量为空,因此克隆它是无用的。
我该怎么做?