Angular,将参数从视图传递到指令

时间:2016-07-12 02:15:47

标签: javascript angularjs angularjs-directive

我在角度和Javascript方面非常新,所以也许这是一个愚蠢的问题...

我需要将来自控制器(route.id)的信息放到视图中,以便由将转换为其他指令的指令解释。对不起,我无法解释得更好。我已经完成了代码简化:

的index.html

<div ng-app="myapp" ng-ctrl="myctrl">
   <adir aattr="{{param}}" >
   </adir>
</div>

myapp.js:

angular.module("myapp",[])
    .controller('myctrl',function(){
       param="bye"
    })
    .directive('oldie', function() {
        return{
            restrict:"E",
            template: function(elem,attr) {
                 return "<div >Hello "+ attr.battr +" </div>"
            }
        }
    })
    .directive('adir', function() {
        return {
            restrict:"E",
            template: function(elem,attr){
                return "<oldie battr={{" + attr.aattr + "}}></oldie>"
            }
        }  
    });

我需要的是将param的内容提供给在指令中使用的属性。

我做了一个小伙子玩: jsfiddle

提前致谢,

2 个答案:

答案 0 :(得分:0)

嗨,一旦你创建了模板指令,你需要使用范围从指令获取值,你必须指定范围

<强> JS

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

app.controller('MainCtrl', function($scope) {
   $scope.message = "Product created!";
})

app.directive('adir', function() {
        return{
            restrict:"E",
            scope: {
            aattr: '@'
        },
      template: '<oldie  battr= {{aattr}} ></oldie>'

    }  
  })

  app.directive('oldie', function() {
    return{
            restrict:"E",
                scope: {
            battr: '@'
        },
      template: '<div class="alert">Hello  {{battr}}</div>'
    }
  })

HTML

 <adir aattr="{{message}}" >
   </adir>

表示参考 https://plnkr.co/edit/AjQnENCvPOU9xWzdylFL

答案 1 :(得分:0)

您的代码中几乎没有错误。

  1. 您使用了“ng-ctrl”而不是ng-controller。因此,控制器根本没有效果。

     <div ng-app="myapp" ng-controller="myctrl">
    
  2. 您尚未在控制器中定义$ scope变量。

    .controller('myctrl',function($controller){
    
  3. 在第一个指令中,在模板中设置属性时,不必使用角度表达式{{}}。它可以是一个普通的字符串。

    return "<oldie battr=" + attr.aattr + "></oldie>"
    
  4. Here是小提琴。

    此方法的替代方法是通过隔离范围中的绑定访问属性。

    请参阅this文章中的指令定义对象部分。