4

我正在使用用于标签输入的 jquery 插件装饰标准文本输入,它实质上将我的 HTML 中的文本输入替换为一个文本区域,用户可以在该文本区域中编写标签名称并按 Enter 以将它们转换为离散的图形标签。(参见http://xoxco.com/projects/code/tagsinput/上的演示)

我在原始文本输入中放置了一个 ngModel 指令。

通过侦听插件中的更改处理程序、从原始文本输入 html 标记解析 ngModel 属性并直接更新范围,我可以通过在标签输入字段中所做的更改来更新范围。

但是,问题是当 Angular 检测到模型中的更改并使用绑定更新视图时,它会在原始文本输入上设置值,这不会导致我可以绑定到知道何时更新插件的任何类型的事件值,因为“更改”仅因用户输入而触发。

有没有办法修改默认的 ngModel 指令行为,让它在处理绑定时触发事件或运行我指定的函数,特别是从模型到视图?

4

1 回答 1

1

您需要覆盖 ngModel.$render 函数

指令.tabbable = function() {
  返回 {
    要求:'ng-model',
    链接:功能(范围,元素,属性,ngModel){
      // 注册 jQuery 小部件
      ngModel.$render = function() {
        // 读取 ngModel.$viewValue 并用它更新 jQuery 小部件。
      }
    }
  };
};
于 2012-05-03T22:54:25.070 回答