我有这个可编辑的指令,除了在模型里面有数据之前不会显示文本之外它很有用。
我尝试的方法是:
{{option.title | Test}}
我希望这会显示option.title
,但它不会。
以下是HTML代码:
<editable model="option.title">{{option.title | Test}}</editable>
我可以使用ng-if
吗?
这是指令:
App.directive('editable', function() {
return {
restrict: 'E',
scope: {model: '='},
replace: false,
template:
'<span>'+
'<input type="text" ng-model="model" style="width: 100%; font-size: 18px" ng-show="edit" ng-enter="edit=false"></input>'+
'<span ng-show="!edit">{{model}} <i class="fa fa-pencil" style="font-size:20px;"></i></span>'+
'</span>',
link: function(scope, element, attrs) {
scope.edit = false;
element.bind('click', function() {
scope.$apply(scope.edit = true);
element.find('input').focus();
});
}
};
});
答案 0 :(得分:0)
编辑1
试试这个:
App.directive('editable', function($compile) {
return {
restrict: 'E',
scope: {model: '='},
replace: false,
template:
$compile('<span>'+
'<input type="text" ng-model="model" style="width: 100%; font-size: 18px" ng-show="edit" ng-enter="edit=false"></input>'+
'<span ng-show="!edit">{{model}} <i class="fa fa-pencil" style="font-size:20px;"></i></span>'+
'</span>'),
link: function(scope, element, attrs) {
scope.edit = false;
element.bind('click', function() {
scope.$apply(scope.edit = true);
element.find('input').focus();
});
}
};
});
编辑2
尝试将变量初始化为:
App.directive('editable', function($compile) {
return {
restrict: 'E',
scope: {model: '='},
replace: false,
template:
$compile('<span>'+
'<input type="text" ng-model="model" style="width: 100%; font-size: 18px" ng-show="edit" ng-enter="edit=false"></input>'+
'<span ng-show="!edit">{{model}} <i class="fa fa-pencil" style="font-size:20px;"></i></span>'+
'</span>'),
link: function(scope, element, attrs) {
scope.edit = false;
scope.model = '';
element.bind('click', function() {
scope.$apply(scope.edit = true);
element.find('input').focus();
});
}
};
});
编辑3
尝试:
<editable ng-init="option={title:''};" model="option.title">{{option.title | Test}}</editable>
答案 1 :(得分:0)
指令的开始和结束标记之间的内容将完全被指令的模板替换。
答案 2 :(得分:0)
<editable model="option.title">{{option.title || 'Placeholder Text' | Test}}</editable>
-
{{model || 'text before model updates' | filter}}