gpt4 book ai didi

angularjs - 带有 ui-select 和 transinclude 的 Angular 指令

转载 作者:行者123 更新时间:2023-12-03 06:56:51 27 4
gpt4 key购买 nike

我有一个项目,我们使用了很多 Angular ui-select 指令。 ui-select 的使用是标准化的,我们使用它的各个点之间的唯一区别是 ui-select-choice 模板和用于获取结果的服务。我正在尝试编写一个包装 ui-select 的 Picker 指令。我遇到的问题是嵌入 ui-select-choice 模板。

这是我编写的指令。

registerDirective("picker", ["$injector", ($injector): IDirective => {
return {
restrict: "E",
templateUrl: "/Scripts/App/Views/Picker.html",
transclude: true,
scope: { model: "=model", sourceName: "=sourceName" },
link: ($scope: interfaces.IPickerScope, $: JQuery, attrs: ng.IAttributes) => {
var service = <services.IPickerService>$injector.get($scope.sourceName + "Service");

$scope.fetchResults = (filter: string) => {
service.pickerSearch(filter).then((response: any[]) => {
$scope.results = response;
});
};
}
};
}]);

指令 View :

<ui-select ng-model="$parent.model" reset-search-input="false">
<ui-select-match placeholder="Enter Item Name"><span ng-bind-html="$select.selected.name"></span></ui-select-match>
<ui-select-choices repeat="item in results"
refresh="fetchResults($select.search)"
refresh-delay="1000">
<div ng-transclude>

</div>
</ui-select-choices>

这是该指令的示例用法:

<picker source-name="'plu'" model="selectedItem">
<span ng-bind-html="item.formattedName | highlight: $select.search"></span>
<small ng-show="item.used"><em>(already in use)</em></small>
</picker>

我仍在学习 Angular 的细节,这是我第一次尝试嵌入。我注意到选择器正在使用嵌入模板,但没有设置任何范围变量。我很确定这是一个与嵌入和作用域行为方式相关的作用域问题。我已经研究过使用编译和嵌入函数,但似乎无法完全达到我需要的程度。

最佳答案

删除指令的范围规范。如果您指定了它,该指令将创建它自己的范围,并且嵌入的部分将绑定(bind)到外部范围。如果您没有指定指令的范围,则指令和嵌入部分都将绑定(bind)到外部范围,从而允许您正在寻找的行为。

关于angularjs - 带有 ui-select 和 transinclude 的 Angular 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30536605/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com