function TodoCtrl($scope) {
$scope.delete = function(i){
$scope.myArray.splice(i, 1);
}
$scope.myStr = 'aaaa\nbbbb\nccccc';
$scope.$watch('myStr', function(myStr){
$scope.myArray = myStr.split('\n');
console.log('$scope.myArray', $scope.myArray);
});
$scope.$watch('myArray', function(e){
if(e.length > 0){
var string = '';
for(var i = 0; i < e.length; i++){
if( e[i] !== ''){
string += e[i] + "\n";
}
}
$scope.myStr = string;
}
}, true);
}
我尝试创建一个textarea
,其输入绑定到array
,其中条目对应于文本中的每一行。
每次删除元素时,textarea
中的对应文本也应删除。
我如何实现这一目标?
我尝试使用$ scope函数$watch
,但是当我在textarea
中键入文本时,我遇到了一些问题,始终会生成一个字符。< / p>
Jsfiddle更好看: https://jsfiddle.net/pf4v83mb/
答案 0 :(得分:0)
当从数组构造字符串时,你犯了一个小错误:在末尾添加了不必要的\n
(jsfiddle)。这就是为什么当你在文本框中键入字母时,空白的新项目(\n
)被添加到数组中,并强制文本框执行相同的操作,即转到新行:
$scope.$watch('myArray', function(e){
if(e.length > 0){
var string = '';
for(var i = 0; i < e.length; i++){
if( e[i] !== ''){
//'\n' not needed for last element
string += e[i] + (i == e.length - 1 ? '' : "\n");
}
}
$scope.myStr = string;
}
}, true);