【问题标题】:angularjs same textarea to edit multiple elementsangularjs相同的textarea来编辑多个元素
【发布时间】:2012-10-05 16:33:38
【问题描述】:

我有这种情况,我从列表中设置了一个当前项目,我需要使用文本区域来编辑该元素的值。 由于某些限制,我必须使用 keyup 事件,但我认为这不是问题。

检查这个小提琴:http://jsfiddle.net/terebentina/Euj2C/

  1. 单击第一个/第二个按钮 - 它可以工作,它将 textarea 中的文本更改为每个元素的值。
  2. 将 textarea 中的文本更改为某事
  3. 再次单击第一个/第二个按钮 - 文本区域不再更新。如果你查看控制台,你可以看到它在元素之间切换,只是 textarea 不再更新了。

有什么建议吗?这让我发疯了!

【问题讨论】:

    标签: textarea angularjs keyup


    【解决方案1】:

    我知道有更好的方法来修改你的指令来做到这一点,但作为一个快速修复,现在你可以尝试将你的 textarea 绑定到一个 ngModel 值,它只是所选元素中当前文本的副本:

    <textarea keyup="" ng-model="keyupText"></textarea>
    

    将此作为您的current 函数:

    $scope.current = function(idx) {        
        $scope.current_element = $scope.elements[idx];
        $scope.keyupText = $scope.current_element.value;
        console.log('current is', $scope.current_element.value);
    }
    

    有关示例,请参阅 this fiddle

    【讨论】:

    • 这不起作用,因为 ng-model 为我(立即)更新了模型,而不是我的 keyup 指令。就像我说的,我需要它是keyup。我的小提琴是实际应用程序中发生的事情的简化版本。在应用程序中,我只需要在用户停止输入时更新模型,而不是立即更新,这就是我不能使用 ng-model 的原因。
    • 我觉得有道理,我会删除我的答案,稍后再看看..与此同时,有人可能会提供帮助!
    • 嗯..是的,它有效,但你至少知道为什么它在我的小提琴中表现得像这样吗?如果您能解释一下,我想了解原因。
    • 只是猜测是,一旦将某些内容输入到 textarea 中,与 UI 的 {{current_element.value}} 评估绑定就会被破坏(因为它不是使用 ngModel 的常规绑定)。如果您单击按钮然后更新一侧并单击按钮,请检查此小提琴jsfiddle.net/Euj2C/1,文本将继续在第二个文本区域中正确更改。
    • 原来 {{}} 是 ng-bind 的别名,它应该是单向的(从模型到视图),尽管它不在我的小提琴中。从挖掘官方文档到角度源代码,我认为要走的路是在我的 keyup 指令中使用 ngmodelcontroller,但我无法使其工作。如果您可以制作这样的示例,那就太好了。现在我让它像你在答案中建议的那样工作......
    猜你喜欢
    • 1970-01-01
    • 2022-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 2017-06-09
    • 1970-01-01
    相关资源
    最近更新 更多