【问题标题】:Angularjs - set view value is not updating displayAngularjs - 设置视图值不更新显示
【发布时间】:2014-04-05 07:43:30
【问题描述】:

我有一个输入指令,应该允许用户撤消。

Enter 使用某些函数保存值,Esc 取消上次保存的编辑。

对于 Esc 按键事件,我正在使用 ngmodel.$setViewValue(scope.last_saved_value),但 输入未更新。我从docs 知道这个函数不会触发$digest,所以我把它放在$apply 中,但它仍然不起作用。

JSBIN example

【问题讨论】:

  • 请检查 Ivan Koshelev 的答案,它似乎是正确答案。如果是这样,请将其标记为答案。

标签: angularjs angular-ngmodel


【解决方案1】:

尝试在拨打$setViewValue 后拨打ngmodel.$render();,应该会有所帮助。

【讨论】:

  • 我认为$render方法应该由开发人员实现,但我猜这仅适用于自定义控件。调用它作为输入(type="checkbox"type="text" 在我的例子中)效果很好。谢谢。
【解决方案2】:

我通常同时包含和要求ngModel

app.directive('cancelableInput', function($timeout) { 
  return { 
    restrict : "A",
    require : 'ngModel', 
    scope: {
      ngModel: '=?'
    },

然后,当您想更改模型值并使其更新时,您可以这样做:

scope.$apply(function() {
  scope.ngModel = scope.last_saved_value;
});

【讨论】:

  • 嘿@dave。我想这里的关键是双向绑定?我的意思是,我可能(虽然这真的没有意义)更新 ng-model 的本地副本?
猜你喜欢
  • 1970-01-01
  • 2016-12-04
  • 2013-10-23
  • 2016-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多