【问题标题】:Access members of data member array in jquery template在jquery模板中访问数据成员数组的成员
【发布时间】:2012-01-20 21:32:17
【问题描述】:

所以我有一个 JSON 对象,它基本上是这样组织的(语法可能是错误的,但我认为它可以理解总体思路):

var result = {{Name: 'name1', Type: 'type1', UserInfo: [{date:'123', location: 'earth'}]},
         {Name: 'name2', Type: 'type2', UserInfo: [{date:'456', location: 'mars'}]}};

我想访问 jQuery 模板内的 UserInfo 数组中的成员,但我尝试的所有操作都会导致我尝试访问的成员出现未找到或未定义的错误。

例如:

${UserInfo.date}

${$UserInfo.date}

${$item.UserInfo.date}

谁能告诉我如何访问这些数组成员?

【问题讨论】:

    标签: jquery json templates


    【解决方案1】:

    所以你不需要 jQuery 来处理 JSON。 JSON 与 JavaScript(JavaScript Object Notation)相关联。

    要访问 JSON 中的对象,请尝试以下操作:

    var innerArray = result[0].UserInfo;
    

    这将从结果中的第一个对象中获取 UserInfo 数组

    【讨论】:

    • 是的,如果我只想访问数据,我不需要 jQuery,但我想将结果数组绑定到 jQuery 模板以进行显示。这就是我遇到麻烦的背景。我想需要更清晰的描述。模板:${Name}
    【解决方案2】:

    正确的语法应该是:

    var result = [
      {"Name": "name1", "Type": "type1", "UserInfo": {"date":"123", "location": "earth"}},
      {"Name": "name2", "Type": "type2", "UserInfo": {"date":"456", "location": "mars"}}
    ];
    

    你可以这样访问它:

    alert(result[1].UserInfo.date); //"456"
    

    这也有效:

    alert(result[1]['UserInfo']['date']); //"456"
    

    看到它工作here

    【讨论】:

    • 同样,我试图访问数组成员的上下文是一个 jQuery 模板,而不是普通的 javascript。
    • jQuery 到底和它有什么关系?
    • 你说${UserInfo}返回一个对象,试试${UserInfo}.location
    • jQuery 模板:api.jquery.com/category/plugins/templates。 ${UserInfo}.location 返回 [object Object].location 作为文本。您需要使用模板符号来访问任何数据成员,这就是所有 {} 和 $ 的原因。我发现了这个:jsfiddle.net/ambiguous/uZzZk,只要变量'd'前面没有var,它就可以工作。我一直在试图弄清楚它和我的对象之间有什么区别。我的是从 WCF Web 服务返回的,我将它作为 data.FunctionNameResult 传递给模板。
    • 嗯,使用那个插件似乎不是个好主意,它说它不会在你刚刚链接的页面上维护。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    相关资源
    最近更新 更多