gpt4 book ai didi

javascript - 将对象保存到angularjs中的JSON文件?

转载 作者:行者123 更新时间:2023-11-29 18:02:34 25 4
gpt4 key购买 nike

我是 angularjs 的新手,正在尝试创建一个单页应用程序。我有一个代码非常简单的家庭 Controller 。类似于 this tutorial 的内容

Angular JS Controller 使用如下代码初始化:

var phonecatApp = angular.module('phonecatApp', []);
phonecatApp.controller('PhoneListCtrl', function ($scope) {
$scope.phones = [
{'name': 'Nexus S',
'_id': 1,
'snippet': 'Fast just got faster with Nexus S.'},
{'name': 'Motorola XOOM™ with Wi-Fi',
'_id': 2,
'snippet': 'The Next, Next Generation tablet.'},
{'name': 'MOTOROLA XOOM™',
'_id': 3,
'snippet': 'The Next, Next Generation tablet.'}
];
});

但在生产数据中可能不会如此整齐地打包。现在我的问题是:

我可以创建指向我的对象的 JSON 表示形式的下载链接吗?

<li ng-repeat="phone in phones">
<a
href="data:text/json;charset=utf-8,{{encodeURIComponent(JSON.stringify(phone))}}"
download="{{phone._id}}.json">
JSON
</a>
</li>

我基本上想使用格式化函数encodeURIComponent(JSON.stringify(phone)) 访问当前对象phone

有没有办法巧妙地做到这一点?

最佳答案

感谢rnrneverdies的建议我在配置中添加了以下内容

phonecatApp.config(['$compileProvider', function ($compileProvider) {
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|file|data|blob):/);
}]);

并将这些函数添加到 Controller 中的 $scope

$scope.stripClone = function(obj) {
if (null == obj || "object" != typeof obj) return obj;
var copy = obj.constructor();
for (var attr in obj) {
if (obj.hasOwnProperty(attr) && attr != '$$hashKey') {
var obj_attr = obj[attr];
if (typeof obj_attr == "object"){
copy[attr] = this.stripClone(obj_attr);
} else if (typeof obj_attr == "array"){
copy[attr] =[];
for(var i =0; i<obj_attr.length; i++){
copy[attr].push(this.stripClone(obj_attr));
}
}else{
copy[attr] = obj_attr;
}
}
}
return copy;
};
$scope.myEncodeJson = function(obj){
return JSON.stringify(this.stripClone(obj));
};

我现在可以在模板中调用这些函数来执行我想要的 json 魔术:

<a ng-href="data:text/json;charset=utf-8,{{myEncodeJson(phone)}}

谢谢你的帮助

关于javascript - 将对象保存到angularjs中的JSON文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33855526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com