0

如果我想将动态创建的 ng-href 添加到元素中,我怎样才能让它表现得像通常的 ng-href?

<a test-href="/link">Test link</a>

指示:

app.directive("testHref", function() {
  return {
    link: function(scope, elem, attr) {
      var newlink = attr.dbHref + "/additional/parameters";
      attr.$set("ng-href", newlink);
    }
  };
});

这会产生<a test-href="/link" ng-href="/link/additional/parameters">Test link</a>,但是我怎样才能让 ng-href 表现得像它应该的那样?

4

4 回答 4

2

http://jsfiddle.net/UnpSH/

app.directive("testHref", function($compile) {
  return {
    link: function(scope, elem, attr) {
      var newlink = attr.dbHref + "/additional/parameters";
      attr.$set("ng-href", newlink);
      elem.removeAttr('test-href'); // prevent recursion
      $compile(elem)(scope); // compile it again
    }
  };
});

不确定您想要实现什么,但您应该使用类似的东西ng-href = "/path/{{scopeVariable}}"来动态更改您的链接。

于 2013-10-17T10:24:21.937 回答
1

您可以将 ng-href 绑定到对象的动态 Url 属性,例如ng-href="{DynamicUrl}"

http://docs.angularjs.org/api/ng.directive:ngHref

如果您正在构建一个需要动态添加 angulerjs 指令的指令,您应该使用 $compile 来获得适当的结果。

于 2013-10-17T10:17:48.707 回答
0

我认为您不需要编写自定义指令来获得 href 的动态 url。您可以使用ng-href和范围参数绑定。

<a ng-href="/path/{{dynamic_var_on_scope}}/123/?p={{var2}}"> Click Here </a>
于 2014-09-20T19:14:23.753 回答
0

如果要绑定动态 url,href则可以在事件中操作 URLng-clickng-mousedown绑定到目标元素。

JS:

var goToDetailPage = function (event, id) {
    var newState = $state.href('DetailView', {id: id});
    jQuery(event.target).attr('href',newState);
};

HTML:

<a ng-mousedown="goToDetailPage($event, id)"> Click Here </a>
于 2015-10-28T10:12:11.750 回答