Closing modal doesn't clear textarea data, but it does clear the model
我有一个包含文本区域的简单模式。我的问题是重置textarea的数据。
这是我的模态:
1 2 3 4 5 6 | <textarea ng-model="content" ng-change="statusChange(content)" placeholder="update" required="required"></textarea> Cancel |
我的控制器:
1 2 3 4 5 6 7 8 9 10 11 | myApp.controller('MyCtrl', function($scope){ $scope.content=""; $scope.statusChange = function(param){ $scope.content = param; } $scope.reset = function(){ $scope.content =""; } }) |
我的问题:我通过ng-model将文本区域中的数据绑定到内容,但是如果我在文本区域中输入内容,然后关闭模式,则得到
的值不同
重新打开模式时,如何强制文本区域具有相同的
这是问题的JSFiddle http://jsfiddle.net/RLQhh/64/。要查看此问题,请打开模式,在文本区域中键入一些内容,然后单击关闭按钮。注意控制台输出(它应该显示您键入的内容,然后是空字符串)。现在,重新打开模态,您将看到您键入的最后一个内容是文本区域中的内容。还要注意然后重新打开窗口,
您需要将
我更新了小提琴,它起作用了。代替
ng-model是一个指令,它创建另一个作用域并将父作用域上的属性绑定(\\'= \\')到文本框的值(或textarea或select等)。当该属性是原始类型时,它将按值传递,并复制到内部范围。由于对象是通过引用传递的,因此在嵌套属性时这不是问题,因为传递了对对象的引用。
当您直接在reset方法中的作用域中写入内容时,它将替换(写入)控制器的$ scope值(而不是ng-model指令),并且不同步。但是,如果将ng模型绑定到对象,则在写入内容(在本例中为modal.content)时,您正在读取模式并写入其content属性。该值将被替换,但是由于您的ng模型是绑定到模式而不是直接绑定到内容的,因此绑定不会中断(您只读取了模式,未写入模式)。