评估templateUrl中的attrs

时间:2016-02-22 09:36:35

标签: angularjs angularjs-directive

我需要在我的指令的templateUrl函数中读取attr的值。

<my-dirc type="type"></my-dirc>

my-dirc:

return {
scope : {
  type : =
},
templateUrl: function(elem, attrs) {
  console.log(attrs.type);
}
}

然而,控制台返回&#34;键入&#34;只是而不是类型的值。 我也尝试过做

<my-dirc type="{{type}}"></my-dirc>
my-dirc :

    return {
    scope : {
      type : @
    },
    templateUrl: function(elem, attrs) {
      console.log(attrs.type);
    }
    }

现在,console.log为我提供了{{type}}。

如何获取类型的值?

2 个答案:

答案 0 :(得分:0)

您无法访问scope内部templatUrl功能的template。因为在创建控制器范围之前首先评估templateUrl / attribute函数,这就是您在属性中获取原始值的原因。如果您在ng-include内传递了硬编码值,那么只有您可以检索内部函数。

此问题只能使用templateUrl: function(elem, attrs) { return '<div ng-include="type? \'template\'+type+\'.html\': \'\'"></div>` }

解决
public class PaletteColor
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ColorId { get; set; }

    [MaxLength(10)]
    [Index("ColorCodeIndex", IsUnique = true)]
    public string ColorCode { get; set; }
    public int ColorInt { get; set; }

}

答案 1 :(得分:-2)

你不需要在表达式中写入类型 试试这个

<my-dirc type="type"></my-dirc>

DIR:

return {
  scope : {
  type : '=type'
},
  templateUrl: '.html'

  'link' : function(elem, attrs) {
  attrs.$observe('type', function (obs) {
        console.log(obs);
  })
  } 
}