如何在angularJs自定义指令中将值作为属性传递

时间:2015-09-29 06:37:25

标签: angularjs attributes directive

我正在尝试将一些值作为自定义指令中的属性传递并访问模板内部,但值将变为空白。

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.name = 'World';
  // $scope.temp = "temp123";

});

app.directive("dirName" , function(){


  return {
    template: "<div> temp = {{temp}} </div>",
    temp:'@',

  };



});
<!DOCTYPE html>
<html ng-app="plunker">

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script>document.write('<base href="' + document.location + '" />');</script>
    <link rel="stylesheet" href="style.css" />
    <script data-require="angular.js@1.4.x" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.min.js" data-semver="1.4.6"></script>
    <script src="app.js"></script>
  </head>

  <body ng-controller="MainCtrl">
    <dir-name temp="my value"></dir-name>
  </body>

</html>

以下是plunker链接: http://plnkr.co/edit/r95YGxS19cMvWMWZMPcN

请帮忙。

1 个答案:

答案 0 :(得分:3)

您需要定义指令的scopetemp将是指令范围内的变量。

return {
    template: "<div> temp = {{temp}} </div>",
    scope: {
      temp:'@'
    }   
};

更新Plunker

如果您需要将MainCtrl值绑定到指令,请使用=代替@,如此Plunker

并且还有另一个(&)指向MainCtrl内的函数。检查此DOC