使用AngularJS将动态元素创建绑定到按键

使用AngularJS将动态元素创建绑定到按键,angularjs,angular-ui,angularjs-model,Angularjs,Angular Ui,Angularjs Model,我试图使用AngularJS从用户文本输入向DOM添加一个元素。 理想的行为是: 用户将字符串输入ng模型“newTask” 按回车键 然后将动态元素附加到DOM中 HTML的相关部分如下所示: <div class="add-task"> <input type="text" placeholder="Type then press enter to create task" ng-model="newTask" /> </div> <div

我试图使用AngularJS从用户文本输入向DOM添加一个元素。 理想的行为是:

  • 用户将字符串输入ng模型“newTask”
  • 按回车键
  • 然后将动态元素附加到DOM中
HTML的相关部分如下所示:

<div class="add-task">
  <input type="text" placeholder="Type then press enter to create task" ng-model="newTask" />
</div>

<div class="task-list">
  <a class="task"><span class="text">{{ newTask }}</span></a>
</div>

{{newTask}}
  • 当前HTML会立即更新。如何将此事件绑定为仅在enter键按下后发生?AngularJS用户界面也被加载
多谢各位,
AngularJS新手尝试创建临时值

Html:


尝试创建一个临时值

Html:


尝试创建一个临时值

Html:


尝试创建一个临时值

Html:

html

<form ng-submit="createTask()">
    <input type="text" ng-model="newTaskText" />
</form>

<div ng-repeat="task in tasks">{{ task.text }}</div>
html

html

html


由于另一个答案涉及ng keypress,因此我将提供一个事实,即您不需要使用ng keypress事件,但只需查看变量即可,而不需要输入:

app.controller('MainCtrl',函数($scope){
$scope.taskList=[];
$scope.$watch('newTask',函数(newVal){
如果(newVal==“newTask”){
$scope.taskList.push(“任务”+$scope.taskList.length);
$scope.newTask=null;
}
});
});
{{taskList.length}
{{task}}

由于其他答案之一涉及ng按键,因此我将提供一个事实,即您不需要使用ng按键事件,但只需查看变量即可,而无需输入:

app.controller('MainCtrl',函数($scope){
$scope.taskList=[];
$scope.$watch('newTask',函数(newVal){
如果(newVal==“newTask”){
$scope.taskList.push(“任务”+$scope.taskList.length);
$scope.newTask=null;
}
});
});
{{taskList.length}
{{task}}

由于其他答案之一涉及ng按键,因此我将提供一个事实,即您不需要使用ng按键事件,但只需查看变量即可,而无需输入:

app.controller('MainCtrl',函数($scope){
$scope.taskList=[];
$scope.$watch('newTask',函数(newVal){
如果(newVal==“newTask”){
$scope.taskList.push(“任务”+$scope.taskList.length);
$scope.newTask=null;
}
});
});
{{taskList.length}
{{task}}

由于其他答案之一涉及ng按键,因此我将提供一个事实,即您不需要使用ng按键事件,但只需查看变量即可,而无需输入:

app.controller('MainCtrl',函数($scope){
$scope.taskList=[];
$scope.$watch('newTask',函数(newVal){
如果(newVal==“newTask”){
$scope.taskList.push(“任务”+$scope.taskList.length);
$scope.newTask=null;
}
});
});
{{taskList.length}
{{task}}

这似乎是最好的实现方法,但您链接的Plunker似乎不起作用?如果您(准确地)在文本框中键入newTask,它就会起作用。一般来说,
$scope.$watch
在每次变量更改时都会运行,这样您就可以避免按键事件的功能。这似乎是最好的实现方法,但您链接到的Plunker似乎不起作用?如果您在文本框中键入newTask(确切地说),它就会起作用。一般来说,
$scope.$watch
在每次变量更改时都会运行,这样您就可以避免按键事件的功能。这似乎是最好的实现方法,但您链接到的Plunker似乎不起作用?如果您在文本框中键入newTask(确切地说),它就会起作用。一般来说,
$scope.$watch
在每次变量更改时都会运行,这样您就可以避免按键事件的功能。这似乎是最好的实现方法,但您链接到的Plunker似乎不起作用?如果您在文本框中键入newTask(确切地说),它就会起作用。通常,
$scope.$watch
在每次变量更改时都会运行,因此您可以避免按键事件上的函数。
app.controller('MainCtrl', function($scope) {
  $scope.saveTask = function (event){
    if (event.keyCode == 13){
      $scope.newTask = $scope.tmpTask;
    }
  }
});
<form ng-submit="createTask()">
    <input type="text" ng-model="newTaskText" />
</form>

<div ng-repeat="task in tasks">{{ task.text }}</div>
$scope.tasks = [];

$scope.createTask = function() {
    $scope.tasks.push({
        text: $scope.newTaskText
    });
};
app.controller('MainCtrl', function($scope) {
  $scope.taskList = [];

 $scope.$watch('newTask', function(newVal){
     if (newVal=="newTask") {
       $scope.taskList.push("Task " + $scope.taskList.length);
       $scope.newTask = null;
     }
 });
});



 <body ng-controller="MainCtrl">
    <div class="add-task">
  <input type="text" placeholder="Type then press enter to create task" ng-model="newTask" />
</div>

{{taskList.length}}
<div class="task-list" >
  <a class="task" ng-repeat="task in taskList" ><span class="text">{{ task }}&nbsp;</span></a>
</div>
  </body>