数据绑定自定义指令angular与在编译函数中替换html

时间:2013-10-25 18:31:29

标签: javascript angularjs data-binding directive

我正在尝试编写一个用自定义输入字段替换输入字段的指令。但是,我无法使数据绑定工作,因为模型没有在指令输入字段中显示。

我在这里创建了一个jsFiddle:

http://jsfiddle.net/6HcGS/392/

我想我真的不知道在这里放置数据绑定的工作原因:

tElement.replaceWith('<input ng-model="ngModel" type="text" />');

如果有人能帮助我,我会非常感激,因为这对我来说一整天都是一个问题。

干杯!

2 个答案:

答案 0 :(得分:1)

tElement.replaceWith('<input ng-model="ngModel" type="text" />');

Angularjs不知道ngModel是绑定。它被解释为一个简单的字符串。所以你需要告诉棱角分明。 我已经更新了你的jsfiddle,告诉你如何做到这一点: http://jsfiddle.net/6HcGS/393/

但是你可以通过删除指令中的隔离范围来更简单地做到: http://jsfiddle.net/6HcGS/394/

与已经提到的lort一样,属性在替换期间传递给元素。当然只有你不使用孤立的范围。

答案 1 :(得分:0)

我不明白你要做什么,但似乎只需要下面的代码示例:

angular.module('zippyModule', [])
.directive('zippy', function(){
    return {
      restrict: 'C',
      replace: true,
      template: '<textarea></textarea>',
    }
});

此处将初始input更改为textarea。通过ng-model绑定仍然有效,因为在替换期间不会从元素中删除其他属性。