gpt4 book ai didi

angularjs - 如何使用 AngularJS 指令创建这个自定义控件?

转载 作者:行者123 更新时间:2023-12-04 08:37:35 24 4
gpt4 key购买 nike

我对 AngularJS 有点陌生,正在尝试基于 Zurb Foundation 的自定义选择编写自定义选择控件(请参见此处:http://foundation.zurb.com/docs/components/custom-forms.html)

我知道我需要为此使用指令,但不确定如何完成此操作。

它必须是可重用的,并允许迭代传递给它的任何数组。当用户从下拉列表中选择项目时可能需要回调。

这是自定义 Foundation 下拉列表的标记:

    <select name="selectedUIC" style="display:none;"></select>
<div class="custom dropdown medium" style="background-color:red;">
<a href="#" class="current custom-select">Please select item</a>
<a href="#" class="selector custom-select"></a>
<ul ng-repeat="uic in uics">
<li class="custom-select" ng-click="selectUIC(uic.Name)">{{uic.Name}}</li>
</ul>
</div>

这暂时有效。我可以从此页面的 Ctrl 填充控件。但是,如您所见,每次我想使用自定义下拉控件时都必须这样做。

关于如何将这个婴儿变成可重复使用的指令的任何想法?

谢谢你的帮助!

克里斯

最佳答案

如果你想让你的指令不仅可以在同一个页面上重复使用,而且可以在多个 AngularJS 应用程序中重复使用,那么在它们自己的模块中设置它们并将该模块作为依赖项导入你的应用程序是非常方便的。

我把 Cuong Vo 的 plnkr 放在上面(所以最初的功劳归于他)并用这种方法把它分开了。现在这意味着如果您想创建一个新指令,只需将其添加到 reusableDirectives.js以及所有已经拥有 ['reusableDirectives'] 的应用程序作为依赖项,将能够使用该新指令,而无需向该特定应用程序添加任何额外的 js。

我还将指令的标记移到它自己的 html 模板中,因为它比直接在指令中作为字符串更容易阅读、编辑和维护。

Plnkr Demo

html

<zurb-select data-label="{{'Select an option'}}" data-options="names" 
data-change-callback="callback(value)"></zurb-select>

app.js
// Add reusableDirectives as a dependency in your app
angular.module('angularjs-starter', ['reusableDirectives'])
.controller('MainCtrl', ['$scope', function($scope) {
$scope.names = [{name: 'Gavin'}, {name: 'Joseph'}, {name: 'Ken'}];
$scope.callback = function(name) {
alert(name);
};
}]);

reusableDirectives.js
angular.module('reusableDirectives', [])
.directive('zurbSelect', [function(){
return {
scope: {
label: '@', // optional
changeCallback: '&',
options: '='
},
restrict: 'E',
replace: true, // optional
templateUrl: 'zurb-select.html',
link: function(scope, element, attr) { }
};
}]);

zurb-select.html
<div class="row">
<div class="large-12 columns">
<label>{{label || 'Please select'}}</label>
<select data-ng-model="zurbOptions.name" data-ng-change="changeCallback({value: zurbOptions.name})"
data-ng-options="o.name as o.name for o in options">
</select>
</div>
</div>

关于angularjs - 如何使用 AngularJS 指令创建这个自定义控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15684417/

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