将DOM元素传递到函数

时间:2018-02-21 10:59:12

标签: angularjs

如果我有一个锚:

<a ng-href="{{model.getUrl(<?>)}}" data-network="twitter">test</a>

返回字符串的范围函数(它不会在点击事件上运行):

$scope.model.getUrl = function(element){
    // How can i get access to the data-network attribute
    switch(element.dataNetwork){
        case "twitter":
        break;
    }
}

如何从这个免费运行的函数中访问数据网络属性?

注意:

我没有传入字符串的原因是因为数据网络需要存在于页面中发生的其他非角度和角度事物。所以我认为我会劫持它并使用它,而不是重新定义一个字符串,只有角度可以有它。

2 个答案:

答案 0 :(得分:0)

我建议您创建类似A

类型setUrl的指令
angular
  .module('app', [])
  .directive('setUrl', function() {
    return {
      restrict: 'A',
      link: function(scope, element, attrs) {
        switch(attrs.network){
          case "twitter":
          break;
        }

        // If you need to set the ng-href you can use attrs.$set
        attrs.$set('ng-href', '/your/path/');
      }
    }
  });

在你的HTML中:

<a set-url data-network="twitter">Twitter</a>

答案 1 :(得分:0)

如果您完全控制此模板,则应该:

<a ng-href="{{model.getUrl(type)}}" data-network="{{type}}">test</a>

并在控制器中定义type

如果type没有改变,你可以使用一次性绑定:

<a ng-href="{{::model.getUrl(type)}}" data-network="{{::type}}">test</a>