我想构建一个快速工具来定义“JSON-schema”,如下所示:
{
"type": "object",
"properties": {
"myFirstProperty": {
"type": "integer"
}
},
"title": "MySchema",
"description": "some description"
}
请在此处查看预览:http://jsfiddle.net/franquis/djRFN/4/embedded/result/
使用简单表单,我可以使用“ ng-model ”属性定义“名称”,“ description ”,但当谈到我的架构的“ properties ”定义时,我遇到了一些麻烦:)
我做的是:
我的问题:
当我创建一个新属性时,当我键入新密钥的名称(即 hostname )时,它会创建许多新属性... 见下文:
{
"type": "object",
"properties": {
"h": {},
"ho": {},
"hos": {},
"host": {},
"hostn": {},
"hostna": {},
"hostnam": {},
"hostname": {
"type": "integer"
}
},
"title": "MySchema",
"description": "some description"
}
我知道这种行为是由“ $ watch(”myva“,函数(a,b){},true); ”函数引起的,但我还能尝试成功吗?
感谢您的帮助!
答案 0 :(得分:3)
在迭代项目之前重置$scope.schema.properties
:
$scope.$watch(function(){return $scope.newProperties;},function(items,b){
$scope.newSchema.properties = {};
angular.forEach(items, function(obj){
if(angular.isDefined(obj.key)) {
var key = obj.key, type = obj.type, name = obj.name;
$scope.newSchema.properties[key] = {
"name": name,
"type": type
};
}
});
},true);
这是保持$scope.schema
有序并与$scope.newProperties