【发布时间】:2013-11-28 18:44:23
【问题描述】:
我在我的应用程序中使用 angular.js 和 jquery 自动完成功能。 所以,我想创建一个角度指令,它包装 jquery 自动完成:
'use strict'
angular.module('nsi')
.directive('autoComplete', function () {
return {
restrict: 'A',
scope: {
httpService: "=",
renderItem: '=',
ngModel: '=',
minLength: '=',
onSelect: '='
},
link: function (scope, elem) {
elem.autocomplete({
source: function (request, response) {
scope.httpService(request.term).then(function (data) {
response(
$.map(data.items, function (item) {
return scope.renderItem(item);
}
)
);
});
},
minLength: scope.minLength,
select: function (event, ui) {
if (scope.onSelect) {
scope.onSelect(ui.item.item);
}
scope.$apply(function () {
scope.ngModel = ui.item.item;
});
}
})
;
}
};
});
在我的控制器中,我为其初始化了必要的参数:
$scope.supplierRender = function(item){
return {
label: item.supplierName,
value: item.supplierName,
item: item
}
};
$scope.httpSupplierService = function(suggest){
return SupplierService.getSuppliers('%' + suggest + '%');
};
$scope.supplierSelect = function(val) {
$scope.employee.supplier.id = val.id;
};
在我的 html 视图中,我开始我的指令:
<input type="text"
auto-complete
min-length="3"
http-service="httpSupplierService"
render-item="supplierRender"
on-select="supplierSelect"
ng-model="employee.supplier"
class="form-control"
value="employee.supplier.supplierName" />
问题是,当我在编辑窗口中打开我的员工时,在自动完成输入中我看到[object Object]。所以问题是:“如何将ngModel绑定到employee.Supplier”,以及对象特定字段的输入值(employee.supplier.supplierName)
【问题讨论】:
标签: javascript jquery angularjs autocomplete