Angular自定义单击以编辑 - 输入值以起作用

时间:2014-06-03 16:26:31

标签: javascript angularjs

我有一个基本的点击来编辑我的代码中的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,因为我无法在控制器中声明我的对象数据(?)。

干杯

1 个答案:

答案 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>