html input ng model,Angular自定义指令中传递ngModel

根据项目需要,希望写一个自定义指令,将指令中传递的数据(比如:my-model="name"),绑定到template中的ng-model中,并且可以被外部作用域使用。

4a0ccde399ca?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

参考了《Angular权威指南》8.2节“向指令中传递数据”,看起来比较混乱,理解起来比较费力。同时也参考了其他博主的博文,但是依然未能达到预期目的。捣腾了大半天,终于搞定了。

解决方案

html:

js:

.directive("myInput", function() {

return {

restrict: 'E',

replace: true,

template: '

' +

'{{myAddon}}' +

'' +

'' +

'

',

scope: {

myAddon: '@',

myModel: '=', // 重点:如果需要跟外部作用域通信,需要改成“=”,template中的myModel不可用{{ }}

myPlaceholder: '@',

myMaxlength: '@'

},

controller: function($scope, $element) {

$scope.myInput = {

"watch": function() {

var val = $element.find("input").val();

console.log($element.find("input").val());

$scope.myModel = val;

console.log($scope.myAddon)

},

"delete": function() {

$scope.myModel = '';

$element.find("input").val('');

}

}

}

}

})

4a0ccde399ca?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

效果图

4a0ccde399ca?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

Chrome Element

$scope.user.test1、$scope.user.test2 直接可以在 controller 中获取和修改。

实现的效果为:点击删除按钮,可以将input框中的数据清除。

总结:

唯一的修改就是将“@”绑定策略改成了“=”,然后将{{ }}移除。简单吧,/泪流满面……

可以参考博文:

欢迎评论指正,转载请标明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值