AngularJS修改指令模板中的范围

时间:2015-03-09 13:48:41

标签: javascript angularjs angularjs-directive angularjs-scope

我有一个角度指令:

app.directive('myStyle', function($location) {
  return {
    scope: {
      myCSSFile: "="
    },
    //template: '<link href="style.css" rel="stylesheet" />',
    template: '<link href="{{ myCSSFile }}.css" rel="stylesheet" />',
    link: function(scope,el, attr) {
      var absUrl = $location.absUrl();
      console.log(absUrl);

      if (absUrl == 'http://run.plnkr.co/KDRUOzkRgvgCzdzy/') {
        console.log("Found");
        scope.myCSSFile = 'style';
      }
      else {
        console.log("Not found");
        scope.myCSSFile = 'style2';
      }      
    }
  };
});

如何根据{{ myCSSFile }}中的函数将值绑定到模板中的link

Plunkr:http://plnkr.co/edit/I6om40ZfRZbETwsbl3MO?p=preview

1 个答案:

答案 0 :(得分:1)

您无法使用具有未定义值的myCSSFile双向绑定。因此,如果您想要隔离范围,可以将其更改为与@绑定,或创建新范围:

scope: true, // plunker1
scope: { // plunker2
    myCSSFile = '@'
},

Punker1Plunker2