Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关闭模式不会清除textarea数据,但会清除模型_Javascript_Html_Angularjs_Twitter Bootstrap - Fatal编程技术网

Javascript 关闭模式不会清除textarea数据,但会清除模型

Javascript 关闭模式不会清除textarea数据,但会清除模型,javascript,html,angularjs,twitter-bootstrap,Javascript,Html,Angularjs,Twitter Bootstrap,我有一个简单的模态,其中包含一个文本区域。我的问题是重置textarea的数据 以下是我的观点: <div class="modal fade" ng-controller="MyCtrl"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> </div>

我有一个简单的模态,其中包含一个文本区域。我的问题是重置textarea的数据

以下是我的观点:

<div class="modal fade" ng-controller="MyCtrl">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
            </div>
            <div class="modal-body">
                <textarea ng-model="content" ng-change="statusChange(content)" placeholder="update" required="required"></textarea>
            </div>
         </div>
         <div class="modal-footer">
             <a class="btn" data-dismiss="modal" aria-hidden="true" ng-click="reset()">
                 Cancel
             </a>
         </div>
    </div>
 </div>
我的问题是:我通过ng模型将textarea中的数据绑定到内容,但是如果我在文本区域中输入内容,然后关闭模式,我们会得到$scope.content=,但是,当我重新打开模式时,textarea仍然包含以前输入的数据。我可以通过打印内容的数据来确认,文本区域中的数据与$scope.content的值不同

当模式重新打开时,如何强制文本区域具有相同的$scope.content值

这里是问题的一个小插曲。要查看问题,请打开模式,在文本区域中键入内容,然后单击关闭按钮。注意控制台输出,它应该显示您键入的内容,后跟空字符串。现在重新打开模式,您将看到最后键入的内容是文本区域中的内容。另外请注意,然后重新打开窗口,$scope.content中的当前数据将显示在控制台中,因为它是空的。

您需要将内容放入范围内的对象中

我更新了,它的工作。使用$scope.modal.content代替$scope.content。有关更多信息,请参阅。可以找到更详细的解释,但它基本上与javascript中的原语工作方式和范围共享有关

ng model是一个指令,它创建另一个作用域,并将父作用域上的属性“=”绑定到textbox或textarea的值,或select等。当该属性是基元时,它将按值传递,并复制到内部作用域。因为对象是通过引用传递的,所以当属性嵌套时这不是问题,因为对对象的引用是通过引用传递的


当您在Your's reset方法中直接写入到您的scope上的内容时,它将替换写入控制器的$scope上的值,而不是ng model指令,以及停止同步。但是,如果将ng模型绑定到对象,则在本例中,当您写入内容modal.content时,您正在读取modal并写入其内容属性。该值将被替换,但由于您的ng模型绑定到modal而不是直接绑定到内容,因此绑定不会被破坏—您只读取modal,没有写入modal。

您的ng控制器属性缺少结束引号。不能肯定这是问题所在,但如果这些函数没有运行,我们无法确定它们是否来自您的帖子,很可能是……哎呀,在创建包含相关信息的小片段时,这是一个输入错误。代码关闭窗口,我可以验证$scope.content在调用后是否为空。tbh我无法将其加载到JSFIDLE或我的本地计算机中。您正在使用的JSFIDLE将非常受欢迎。我对JSFIDLE很陌生,有没有办法让它使用bootstrap?左侧有一个外部资源选项卡,您可以使用它包含bootstrap。话虽如此,我不认为任何人会介意这个例子没有风格:谢谢你的帮助,这对我很有用,它帮助我了解了更多关于angular的知识。我是angular的新手,我正在努力将一个站点从主干转换为angular。很高兴我能帮上忙。在阅读了这些链接之后,我变得足够熟悉,可以更好地在我的答案中解释这个问题。希望能有帮助
myApp.controller('MyCtrl', function($scope){
    $scope.content="";

    $scope.statusChange = function(param){
        $scope.content = param;
    }

    $scope.reset = function(){
        $scope.content = "";
    }
})