【问题标题】:how to apply element.bind for particular element only如何仅对特定元素应用 element.bind
【发布时间】:2014-07-15 08:35:53
【问题描述】:

下面是我的指令中的 sn-p,它调用了一个控制器

element.bind('change', function() {
    //alert("inside change function");
    $rootScope.selectedBankName = scope.selectedBankName;
    newvalue = scope.selectedBankName;
    $timeout(function() {
        scope.changeClient();
    }, 500);
});

如果我使用上面的代码,它会为每个元素更改调用 changeclient() 函数。但我的要求是仅在更改选择框中的值时需要调用 changeClient 函数。请建议我如何执行此操作。

编辑:

http://plnkr.co/edit/clTJjlZRlErskt6T0Foc?p=preview

当我更改文本框或下拉列表中的某些值并单击显示警报框的任何位置时,请找到 plunker 代码。但我的要求是仅当我更改下拉值并单击任意位置(不适用于文本框)时才应显示警报。

【问题讨论】:

  • 你能提供一个小提琴或 plunker 吗?
  • 你需要在选择框上使用指令。
  • 请找到提供的插件链接

标签: angularjs angular-directive


【解决方案1】:

如果你想在下拉模型改变时触发一个事件,你真的不需要选择写一个指令。只需在选择上添加一个观察者并等待更改

$scope.$watch('age',function(newVal){
    $scope.loadMoreTweets();
});

Plunker:http://plnkr.co/edit/j3ZR32c4G8PpbLEtrFpZ?p=preview

编辑:

如果你真的选择使用指令代码,你可以将指令应用于选择本身,而不是它的父 div

<select enter>

【讨论】:

  • 你可以改用&lt;select enter&gt;
  • 但实际上我必须应用我在 plunker 中显示的指令,不仅适用于选择框,我还必须为 div 中的每个元素应用。
  • 我不应该将值硬编码为 $scope.age = 19,我应该只在更改下拉列表后获取值。
猜你喜欢
  • 2023-03-13
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
  • 2010-10-23
  • 1970-01-01
相关资源
最近更新 更多