首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >代码镜像不适用于angular js绑定变量

代码镜像不适用于angular js绑定变量
EN

Stack Overflow用户
提问于 2018-01-24 08:52:51
回答 1查看 400关注 0票数 0

Html:

代码语言:javascript
复制
<body ng-app ng-controller="OrderFormController">
<!--<h1 class="errorHeader">List of Classes</h1>-->
<header>
    <div class="container">
        <div id="branding">
            <h1>Apex  <span class="highlight"> Editor </span> </h1>

        </div>

    </div>
</header>
<div class="col-md-12 col-lg-12">
    <div class="panel with-nav-tabs panel-default">
        <div class="panel-heading">
            <ul class="nav nav-tabs">
                <li class="active"><a href="#tab1default" data-toggle="tab">Apex Editor</a></li>
            </ul>
        </div>
        <div class="panel-body">
            <div>
                <input type="text" name="apexClass" id="autocomplete" placeholder="Type the name of the Apex class you want to edit"/>
            </div>
            <div class="btn-group-vertical" style="padding: 1%">
                <button type="button" class="btn btn-primary" id="editBtn">Edit</button>
                </button>
            </div>
            <div class="tab-content" align="left">

                <div id='error' style='display:none'>{{apexClassWrapperError.message}}</div>

                <div>{{apexClassWrapper.name}}</div>
                <img src="../img/ajax-loader.gif" id="loaderImage" style='display:none'>
                <form>
                    <textarea ng-model="apexClassWrapper.body" id="code" name="code" readonly="true" >{{apexClassWrapper.body}}</textarea>
                </form>


            </div>
            <button type="button" class="btn btn-primary" id="saveBtn" ng-click="postdata(apexClassWrapper)">Save</button>
        </div>
    </div>
</div>
<script src="../js/makeEditable.js"></script>
<script>

    $(function() {
        var editor = CodeMirror.fromTextArea(document.getElementById("code"),{
            linenumber : true,
            matchBrackes: true,
            mode: "text/x-apex"
        })

    });
</script>


<footer>
    <p>Web based Apex Editor</p>
    <p>Developed By - Nagendra Kumar Singh</p>
</footer>
</body>

顶部包含的CSS和JS文件:

代码语言:javascript
复制
<script src="../js/codemirror.js"></script>
<script src="../js/apex.js"></script>
<script src="../js/matchbrackets.js"></script>
<link href="../css/codemirror.css" rel="stylesheet"/>

控制器是一个通过RESTApi获取类的简单控制器。

代码语言:javascript
复制
function OrderFormController($scope, $http) {

    $('#autocomplete').autocomplete({
        type: 'POST',
        serviceUrl: 'http://localhost:8989/getSuggestion',
        onSelect: function (suggestion) {
            console.log('suggestion.value -> '+suggestion.value);

            var data = {
                apexClassName:suggestion.value
            };

            var config = {
                params: data
            };

            $('#loaderImage').show();
            $http.get("http://localhost:8989/getApexBody",config).then(function (response) {
                $scope.apexClassWrapper = response.data;
                 $('#loaderImage').hide();
            });
        }
    });

};

但是我只能在我的文本区看到{{apexClassWrapper.body}},在使用CodeMirror时我看不到真正的代码,如果我移除代码镜像,我可以看到类,但我想不出一种方法来显示包含CodeMirror的正文。控制台日志中没有错误,所有的JS和CSS文件都加载得很好。请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2018-01-24 09:35:08

好吧,我想我可能已经弄明白了。我所做的是在js文件中为codemirror代码设置了一个超时时间,使其按如下方式运行,并将其从index.html中删除。

代码语言:javascript
复制
$('#loaderImage').show();
        $http.get("http://localhost:8989/getApexBody", config).then(function (response) {
            $scope.apexClassWrapper = response.data;
            $('#loaderImage').hide();
            if(globalEditor) {
                globalEditor.toTextArea();
            }
            setTimeout(function (test) {
                var editor = CodeMirror.fromTextArea(document.getElementById('apexBody'), {
                    lineNumbers: true,
                    matchBrackets: true,
                    mode: "text/x-apex"
                });

                globalEditor =  $('.CodeMirror')[0].CodeMirror;
            }), 2000
        });

这个答案中唯一的问题是,当我试图加载不同的类时,它会创建多个代码编辑器窗口。我该如何解决这个问题呢?

所以最后让它运行起来,定义了一个全局变量并使用了toTextArea方法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48413237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档