1

我有这个 JSON 文件:

{
"guest": {
    "permissions": {
        "webportal": [
            "access",
            "modify"
        ],
        {…}
        "test/dashboard": [
            "access"
        ]
    },
    "users": [
        "guest"
    ],
    "time_out": "3600000"
},
"administrator": {
    "permissions": {
        "webportal": [
            "monitoring",
            "access",
            "modify"
        ],
       {…}
        "test/settings": [
            "access",
            "modify"
        ]
    },
    "users": [
        "admin"
    ],
    "time_out": "3600000"
  }
}

我需要做的就是简单地将第一个项目放入一个选择框中。例如:

“用户”部分下的 GUEST、ADMINISTRATOR 和 ANYTHING 可能是“n”个条目,需要放入这样的选择中:

<select id='JSONFile'>
     <option value='administrator'>administrator</option>
     <option value='guest'>guest</option>
     <option value='useradmin'>useradmin</option>
</select>

JSON 文件中的数据余额需要放入一个数组中,以便我以后可以访问它并将其转储到CheckBoxes.

例如:在来宾下:权限:WebPortal - there's ACCESS and MODIFY。这是仅有的两个权限。因此,访客可以访问 WebPortal;他们必须具有访问权限。要编辑,修改。得到它?

所以我对这些东西很陌生,只需要让它尽可能简单。

哦,是的,我有没有提到我们正在使用KNOCKOUT并且下拉列表必须是 KO Observable Array?但一次只做一件事。

第二部分稍后来。

再见!

4

2 回答 2

0

在我了解了淘汰赛映射插件后,我的淘汰赛生活变得更加轻松。

http://knockoutjs.com/documentation/plugins-mapping.html

有了它,您可以从 JSON 数据自动创建模型。

viewModel = ko.mapping.fromJS(data);

一旦进入 viewModel,你就可以迭代到你的心内容。您可能希望将根节点添加到您的 json 数据中,以便更轻松地迭代角色。

于 2013-07-10T19:58:46.267 回答
0

要获取和显示选择元素中最高级别对象的键,请使用以下代码。

var optionValues = [];

var data = JSON.parse(JSONdata);       //this parses your data securely into an object that you can easily use
for(option in selection) {             //goes through the highest level keys of the object
  if (data.hasOwnProperty(option)) {   //this ignores the default object properties (things you don't want)
    if(option === 'users')             //takes into account user titles
      JSONdata['users'].forEach(function(userTitle) { //iterates over all of the user data and appends usertitles to the array
        optionValues.push('user'+userTitle);
      });
    else {                           // for the default roles like admin
      optionValues.push(option);     //this puts all of the non-user keys into an array 
    }
  }
}

这将为['guest','administrator','useradmin']您在上面发布的数据输出 =>。然后,您可以使用 document.createElement 和 document.appendChild 为所有这些创建选项,并将它们放在文档中的 select 元素下。

于 2013-07-10T20:09:48.760 回答