首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用角填充形式的数据

使用角填充形式的数据
EN

Stack Overflow用户
提问于 2016-01-05 23:13:37
回答 1查看 4.4K关注 0票数 1

我是一个真正的初学者角(但不是JS),从昨天开始,所以我希望你原谅我,如果这个问题听起来很愚蠢。考虑以下小应用程序:

HTML:

代码语言:javascript
复制
<!doctype html>
<html ng-app="todoApp">
    <head>
        <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
        <script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
        <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
        <script src="/js/TestController.js"></script>
    </head>
    <body ng-controller="TestController as myControl">
        <div id="overlaybox">
            <button ng-click="myControl.showUpd(4)">Test</button><br/><br/><br/>

            <form ng-submit="myControl.updTodo()">
                Note:<br/>
                <textarea rows="5" cols="30" id="updContent" ng-model="noteupd.content"></textarea><br/>
                Deadline (format YYYY-MM-DD HH:MM):<br/>
                <input type="text" id="updDeadline" ng-model="noteupd.deadline" /><br/>
                Completed: 
                <input type="checkbox" id="updCompleted" ng-model="noteupd.completed" /><br/>
                <input type="hidden" id="updID" ng-model="noteupd.id" /><br/>
                <input type="submit" value="Update" />
            </form>
        </div>
    </body>
</html>

Angular-controller:

代码语言:javascript
复制
angular.module('todoApp', []).controller('TestController', function($scope, $http) {
    var thisApp = this;

    thisApp.showUpd = function(noteID) {
        $http({method : 'GET', url : 'http://localhost:8000/notes/' + noteID})
            .then (function(response) {
                console.log(response.data.content);
                console.log(response.data.deadline);
                console.log(response.data.id);
                console.log(response.data.completed);

                document.getElementById("updContent").innerHTML = response.data.content;
                document.getElementById("updDeadline").value = response.data.deadline;
                document.getElementById("updID").value = response.data.id;

                if (response.data.completed == 1) {
                    document.getElementById("updCompleted").checked = true;
                } else {
                    document.getElementById("updCompleted").checked = false;
                }
            }, function() {
                alert("Error getting todo note");
            });
    }

    thisApp.updTodo = function(noteupd) {
        console.log("TEST");
        console.log($scope.noteupd);
    }
});

单击Test按钮后,我在控制台中得到以下输出:

  • TestController.js:7 123123
  • TestController.js:8 2016-01-05 10:28:42
  • TestController.js:9 4
  • TestController.js:10 %0

到那时,表单中的字段已经填入(隐藏字段有一个值)。单击Update后,我在控制台中得到了以下内容:

  • TestController.js:27测试
  • TestController.js:28未定义

如果我手动地更改字段中的值,我确实得到了其他的东西,而不是“未定义的”,但是我们的想法是,人们不应该改变这些值。此外,即使更改了所有字段,该对象也不包含隐藏的"id“。

很明显,我是这方面的初学者,显然我做错了,但是有没有人对我如何使这个工作有建议?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-05 23:40:10

您的html很好,但是您的代码需要修复。

首先在代码中定义noteupd

使用noteupd更改html值而不是document.getElementById

它应该修复您的代码--它最终会变成如下所示

代码语言:javascript
复制
angular.module('todoApp', []).controller('TestController', function($scope, $http) {
    var thisApp = this;
    $scope.noteupd={}; //defining noteupd
    var noteupd=$scope.noteupd;  //preventing scope issues
    thisApp.showUpd = function(noteID) {
        $http({method : 'GET', url : 'http://localhost:8000/notes/' + noteID})
            .then (function(response) {
                console.log(response.data.content);
                console.log(response.data.deadline);
                console.log(response.data.id);
                console.log(response.data.completed);

                //updating your html
                 noteupd.content= response.data.content;
                noteupd.deadline = response.data.deadline;
              noteupd.id= response.data.id;

                if (response.data.completed == 1) {
                    noteupd.completed = true;
                } else {
                    noteupd.completed = false;
                }
            }, function() {
                alert("Error getting todo note");
            });
    }

    thisApp.updTodo = function(noteupd) {
        console.log("TEST");
        console.log($scope.noteupd);
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34622963

复制
相关文章

相似问题

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