【问题标题】:Angular-Schema-Form Change FORM on SCHEMA changeAngular-Schema-Form 更改 SCHEMA 更改表单
【发布时间】:2015-07-15 12:30:39
【问题描述】:

我在使用角度模式形式更改 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": {
}

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

【问题讨论】:

  • 您发布了两个看起来几乎相同的代码 sn-ps;我真的没有在这里看到任何问题或说明出了什么问题。 “它没有用”从来都不是一个好的问题陈述。
  • 嗯,这些sn-ps并不是很重要。我只是想表明我正在改变模式。尽管架构发生了变化,但呈现的表单是相同的。
  • 您没有显示进行此更改的完整代码,但我怀疑您没有发出此处记录的$scope.$broadcast('schemaFormRedraw') 事件:github.com/Textalk/angular-schema-form/blob/master/docs/…
  • 这似乎是我一直在寻找的。但是,“[错误] 错误:未实现。只允许在模式的根级别键入“对象”。”使用后。

标签: javascript angularjs jsonschema angular-schema-form


【解决方案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');
}

【讨论】:

    猜你喜欢
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多