这是一个 AngularJS 小部件,它用可编辑的文本字段替换标签。单击文本会将其替换为输入字段,然后在输入上按 Enter 会更新现有资源。
我对我生成的代码不满意。所有这些评估和应用真的有必要吗?我该如何改进呢?
使用
editable-text(model="activeCustomer.phone_number", resource="Customer", field="phone_number")
指令代码
.directive("editableText", function($injector){
return {
restrict: "E",
templateUrl: document.views.directivePartials.editableText,
link: function(scope, elem, attrs){
$(elem).find(".noEdit").click(function(){
scope.showEdit = true;
scope.$apply();
});
var ENTER = 13;
$(elem).find('.edit').keyup(function(event){
if(event.keyCode == ENTER){
var resource = $injector.get(attrs.resource);
var params = {};
params[attrs.field] = scope.value
resource.update(params);
scope.showEdit=false;
}
});
scope.showEdit = false;
scope.$watch(attrs.model, function(){
scope.value = scope.$eval(attrs.model);
});
},
};
})
模板
span.editableTextField
input.edit(type="text", ng-show="showEdit", ng-model="value")
span.noEdit(ng-show="!showEdit") {{value}}