我有一个基本的点击来编辑我的代码中的span字段,它会提示输入框和几个按钮:
<span ng-click="editField()" ng-if="edit === false">Your text to edit</span>
<div ng-if="edit === true">
<input type="text" ng-bind="data.field" value="Your text to edit" />
<button type="submit" class="btn btn-primary" ng-click="update(data.field, 'somename')"><span class="glyphicon glyphicon-ok"></span></button>
<button type="button" class="btn btn-default" ng-click="cancelEdit()"><span class="glyphicon glyphicon-remove"></span></button>
</div>
当用户保存时,将调用update
函数。但是,我遇到的问题是如何将用户输入的任何文本发送到我的角度逻辑,而无需在控制器的开头设置对象中的文本值?
以下是一个例子: http://jsfiddle.net/43GUa/1/
基本上它在控制台中打印:undefined + somename
如何将undefined
输入到输入字段中的文本?我无法使用ng-model
,因为我无法在控制器中声明我的对象数据(?)。
干杯
答案 0 :(得分:3)
ng-bind
用值替换元素的文本,您希望使用ng-model
双向绑定到控件的值(fiddle):
<input type="text" ng-model="data.field"/>
为什么不想在开始时设置值?如果您希望值来自HTML,则应编写指令。如果您在多个地方执行此操作,则可以编写更新字段或调用函数的内容:
<my-editable update="data.field">Your text to edit</my-editable>
<!-- or -->
<my-editable update="updateValue($value, 'somename')">Your text to edit</my-editable>
如果确实不希望这样做,您可以将$event
传递给editField()
,然后使用以下值加载data.field
:< / p>
$scope.editField = function(event) {
$scope.edit = true;
$scope.data.field = event.target.innerText;
};
<span ng-click="editField($event)" ng-if="edit === false">Your text to edit</span>