3

我在使用角度模式形式更改 json 模式时遇到问题。如果我在这样的代码中设置架构

$scope.schema = {
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "Schema number ONE",
    "type": "object",
    "properties": {..

它可以正常工作并按照我的意愿正确呈现整个表单。但我想从网络服务加载数据。

所以我尝试将架构设置为空,然后通过单击按钮进行更改,但它没有用。我的意思是,我从服务中获得了架构,但形式没有改变。例如在代码中是这样的。

$scope.schema = {};
$scope.changeSchema= function(){
    $scope.schema = {
        "$schema": "http://json-schema.org/draft-04/schema#",
        "title": "  Schema number two that I want",
        "type": "object",
        "properties": {
}

我想要的是选择要加载的架构并将表单更改为我选择的架构。非常感谢。

4

1 回答 1

1

正如 Claies 在他们的评论中指出的那样,您需要触发 schemaFormRedraw 广播。但是,在加载时,错误是由于对您拥有的架构进行了验证{},这将需要是一个临时架构,沿着这些线路的东西应该可以工作:

$scope.schema = { "type": "object", "properties": {} }};
$scope.changeSchema = function() {
    $scope.schema = {
        "$schema": "http://json-schema.org/draft-04/schema#",
        "title": "  Schema number two that I want",
        "type": "object",
        "properties": {...}
    }
    $scope.$broadcast('schemaFormRedraw');
}
于 2017-07-18T07:34:45.377 回答