【发布时间】:2013-05-17 13:44:36
【问题描述】:
我想使用指令来自定义我的代码。
我创建了一个按钮来切换控制器中定义的isCollapsedUpload 标志为:@scope.isCollapsedUpload=false。
当用户按下按钮时,isCollapsedUpload 变为 true 或反之亦然,并且图标发生变化。
从控制器:
$scope.switcher = function (booleanExpr, trueValue, falseValue) {
return booleanExpr ? trueValue : falseValue;
}
$scope.isCollapsedUpload = false;
<button class="btn" ng-click="isCollapsedUpload = !isCollapsedUpload">
<span>Upload file</span>
<i class="{{ switcher( isCollapsedUpload, 'icon-chevron-right', 'icon-chevron-down' )}}"></i>
</button>
我写了这个directive:
feederliteModule.directive('collapseExtend', function() {
return {
restrict: 'E',
scope: { isCollapsed:'@collapseTarget' },
compile: function(element, attrs)
{
var htmlText =
'<button class="btn" ng-click="isCollapsed = !isCollapsed">'+
' <span>'+attrs.label+'</span>'+
' <i class="{{ switcher(isCollapsed, \'icon-chevron-right\', \'icon-chevron-down\' )}}"></i>'+
'</button>';
element.replaceWith(htmlText);
}
}
});
现在我可以像这样使用它了:
<collapse-extend
collapse-target="isCollapsedUpload"
label="Upload file"
></collapse-extend>
它不起作用。没有图标变化。没有错误,
isCollapsedUpload 标志不会改变。它只会变成 directive
我错过了什么吗?
【问题讨论】:
标签: javascript angularjs angularjs-directive