在编译阶段,我可以访问所有的attrs元素。那么,为什么当我通过这个attr功能我得到未定的
这是代码和plunker:
.directive('test', function() {
return {
restrict:'A',
compile: function(ele, attr) {
var div = angular.element( '<div ng-show="someCond(attr.some)">directive</div>' );
ele.append(div)
return function(scope, ele, attr) {
scope.someCond = function(name) {
console.log(name);
return name == 'john';
}
}
}
}
})
答案 0 :(得分:0)
你是否尝试用这些包装所有模块?
;(function(window,angular,undefined){
//code here
})(window,window.angular);
这不是什么大问题,但关闭是好的:D
答案 1 :(得分:0)
attr
对象在scope
中不可用
您可以这样做以使attr
对象可用:
return function(scope, ele, attr) {
scope.attr = attr;// look here
scope.someCond = function(name) {
console.log(name);
return name == 'john';
}
}
答案 2 :(得分:0)
你基本上犯了两个错误。
第一个属性需要正确连接,所以这个语句必须是
var div = angular.element( '<div ng-show="someCond('+attr.some+')">directive</div>' );
其次,html中提供的值应该在引号内添加,因此h1应该是:
<h1 test some="'john'">test</h1>
见我的plunkr