我想更改指令模板的值

时间:2015-11-11 21:57:25

标签: angularjs

我定义了一个这样的指令:

module.directive("jump", function(html){
var text = html.getHtml();
return{
    scope:{},
    restrict:"AE",
    template: text,
}
});

我有一个存储html的服务,如下所示:

module.factory('html',function(){
var html = "";
return {
    setHtml: function(text){
        html = text;
    },
    getHtml: function(){
        return html;
    }
}
})

我想在进入文章页面时更改模板值,因为每篇文章的细节都不同,我只能从API获取,就像

<p><a href="#" ng-click="open(\'http://www.facebook.com\')"facebook</a></p>

我想为每篇文章定义一个指令来显示文章的细节。 但是现在,当我进入一个文章页面时,定义了指令的模板,如果我想看到其他文章,模板值是第一篇文章的详细信息。我想知道如何更改它。

1 个答案:

答案 0 :(得分:0)

&#34;注意:Angular中的所有服务都是单例。&#34;

如果您需要为指令的每个实例使html不同,则不能使用将其限制为单个实例的单例。

为什么不在指令中定义模板?这种方式更清晰。像这样:

正在使用的

指令:

<div ng-repeat="foo in dataFromApiThatYouGetFirst">
  <jump url="{{foo.url}}" title="{{foo.title}}"></jump>
</div>

指令:

restrict: 'E',
template: '<p><a href="#" ng-click="open(vm.url)">{{vm.title}}</a></p>',
replace: true,
scope: {
  url: '=?',
  title: '=?'
},
controllerAs: 'vm',
bindToController: true,