计算属性在初始化时抛出错误

时间:2015-09-15 19:41:03

标签: ractivejs

(参考http://jsfiddle.net/kapLv0mt/4/

我有

{
 typ: "JWT",
 alg: "RS256",
 x5t: "MnC_VZcATfM5pOYiJHMba9goEKY",
 kid: "MnC_VZcATfM5pOYiJHMba9goEKY"
}.
{
 aud: "https://mvp201514929cfc350148cfa5c9b24a7daaf694.azurewebsites.net/login/aad",
 iss: "https://sts.windows.net/0252f597-5d7e-4722-bafa-0b26f37dc14f/",
 iat: 1442346927,
 nbf: 1442346927,
 exp: 1442350827,
 ver: "1.0",
 tid: "0252f597-5d7e-4722-bafa-0b26f37dc14f",
 oid: "5a6f33eb-b622-4996-8a6a-600dce355389",
 sub: "5a6f33eb-b622-4996-8a6a-600dce355389",
 idp: "https://sts.windows.net/0252f597-5d7e-4722-bafa-0b26f37dc14f/",
 appid: "0d7dce06-c3e3-441f-89a7-f828e210ff6d",
 appidacr: "1"
}.

在ractive初始化期间抛出错误,并且计算属性“male_count”也不返回正确的值。初始化错误是由包含在模板中的属性产生的,但即使这样,计算属性也不会返回正确的值,可能是因为它在初始化时被错误地计算了。

如何初始化依赖于组件的Ractive对象属性?

编辑: 根据响应者的建议,我在这里会提到代码示例与我的实际代码相比非常简单。实际代码中的组件过滤算法基于大约9个比较标准,包括日期,文本匹配,数字范围,其中阈值通过用于列表过滤器的UI输入。出于这个原因,我想坚持在组件中实现的过滤器测试的想法(如示例中所示)。

1 个答案:

答案 0 :(得分:1)

首先,您甚至不需要查询member组件来统计数据中的男性。数据已经在父组件中,在父组件中计算的也是。为什么不直接询问自己

computed: {
    male_count: function () {
        return this.get('family').filter(function (familyMember) {
            return familyMember.gender === 'm'
        }).length;
    }
}

要记住,在Ractive中,您对数据进行操作,而不是对DOM(或在本例中为组件)进行操作,这也是一件好事。一旦开始使用DOM操作或查找组件,您的设计需要重新思考。