考虑以下HTML
<some-component [input]="something" (change)="update(event)"></some-component>
和update()函数
update(event) {
console.log(event);
this.firebaseRef.update(event.$key, event);
}
此日志:
$exists: function()
$key: "initial"
end: "1.20"
options: Object
start: "0.20"
text: "Dit is een test"
并抛出此错误
Firebase.update失败:第一个参数包含属性
中的函数
如果没有Angular附加的美元符号前缀属性,如何从偶数传递数据?我不喜欢在不手动构建新数据对象的情况下这样做。
答案 0 :(得分:2)
它根本不是一个好的意识形态,但你可以遍历对象属性并过滤那些不以$
开头或者也是函数的东西。但我建议你改变事件向处理程序发送数据的方式,这样你就不必对特殊情况进行消毒。
function getObjectWithoutDollarSignNameAndFunctions(obj){
var keys = Object.keys(obj).filter(function(key){
return typeof obj[key] !== 'function' && key.indexOf('$') !== 0;
});
return keys.map(function(key){ return obj[key] });
}
var myObject = {
$angularKey: 1,
normalFunction: function(){},
normalKey: 1,
normalKey2: {a:12}
};
var myNewObject = getObjectWithoutDollarSignNameAndFunctions(myObject);
console.log(myNewObject);
&#13;