我在角度和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
提前致谢,
答案 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>
答案 1 :(得分:0)
您的代码中几乎没有错误。
您使用了“ng-ctrl”而不是ng-controller
。因此,控制器根本没有效果。
<div ng-app="myapp" ng-controller="myctrl">
您尚未在控制器中定义$ scope变量。
.controller('myctrl',function($controller){
在第一个指令中,在模板中设置属性时,不必使用角度表达式{{}}
。它可以是一个普通的字符串。
return "<oldie battr=" + attr.aattr + "></oldie>"
Here是小提琴。
此方法的替代方法是通过隔离范围中的绑定访问属性。
请参阅this文章中的指令定义对象部分。