假设我在我的应用程序中为国家/地区使用了相当多的下拉选项(又名组合框)。为了避免一遍又一遍地重复相同的代码,我想为此创建一个指令。
但是:使用以下指令并不能满足我的所有期望(见下文),而复制粘贴模板确实符合我的所有期望..
app.directive('countrydropdown', function($compile) {
return {
restrict: 'E', //attribute or element
scope: {
countryUri: '='
},
templateUrl: 'countrydropdown.html',
controller : function($scope) {
$scope.listItems = [
{name: 'Afghanistan', code: 'AF'},
{name: 'Åland Islands', code: 'AX'},
{name: 'Albania', code: 'AL'},
];
我的模板在哪里:
<div>
model (inside directive): {{countryUri}}
<ui-select ng-model="countryUri" theme="selectize" >
<ui-select-match placeholder="Select or search a country in the list...">{{$select.selected.name}}</ui-select-match>
<ui-select-choices repeat="'/api/countries/'+country.code as country in listItems | filter: $select.search">
<span ng-bind-html="country.name | highlight: $select.search"></span>
<small ng-bind-html="country.code | highlight: $select.search"></small>
</ui-select-choices>
</ui-select>
</div>
我期望它做什么:
- 更改第一个组合,更改模型 $scope.mydata.selectedCountry。此更改还应影响/更新第二个组合
- 更改第二个组合,更改模型 $scope.mydata.selectedCountry。同样,第一个组合应该受到影响/更新
- 按下清除按钮应该清除两个组合框中的选择(因为清除按钮使模型 $scope.mydata.selectedCountry == null)
我一定是做错了什么,但我找不到。在这个 plukr 中查看我的示例:http ://plnkr.co/edit/oF1R0F1udfiRulx5NvLO?p=preview
请注意,在第一个组合框中进行更改,everyting 似乎工作正常。(第二个组合更新正常)一旦我在第二个上做出选择,绑定似乎被“破坏”
对此有任何提示吗?