假设我有类似的东西:
<input ng-model="object.properties.property_name" options="{ updateOn: 'blur' }" ng-change="object.save('property_name')">
我希望这样做真的很短:
<input name="property_name" autosave="object">
但要做到这一点,我需要动态地将ngModel绑定到现有输入。到目前为止,我已经缩短了它,看起来像这样:
<input ng-model="object.properties.property_name" name="property_name" autosave="object">
这是让我走得那么远的指令:
.directive('autosave', [function() {
return {
restrict: 'A',
scope : {
autosave : '=',
},
link: function(scope, element, attrs) {
element.bind('change', function(){
scope.autosave.save(attrs.name);
});
}
}
}])
如何将scope.autosave.properties[attrs.name]
动态添加到ngModel并将其绑定到输入标记?
答案 0 :(得分:0)
我还没有找到创建模型的方法,这是原始问题,但我通过从模型中提取属性名称来缩短它:
<input ng-model="object.properties.property_name" autosave="object">
和这个指令
.directive('autosave', [function() {
return {
restrict: 'A',
scope : {
autosave : '=',
},
link: function(scope, element, attrs) {
element.bind('change', function(){
var property_name = attrs.ngModel.match(/(?=[^.]*$)(\w+)/)[1];
scope.autosave.save(property_name);
});
}
}
}])
它并不理想,但情况会更好。