選択項目に国のリストを自動入力するカスタム ディレクティブを作成しました。ディレクティブには preselect isolate スコープ属性があり、true に設定すると国が事前選択されます。
ng-model
また、isolate スコープ属性としても渡されます。問題は、ng-model
設定されないことです。
<auto-countries>
設定できるようにディレクティブを作成する方法について、誰かが私にいくつかの指針を教えてくれますng-model
か?
ここに私のディレクティブのコードがあります:
app.directive('autoCountries', function() {
return {
restict: 'E',
controller: 'CountriesCtrl as ctrl',
scope: {
preselect: '=',
ngModel: '='
},
template: [
'<select ng-if="!preselect" ng-model="ngModel">',
'<option value="">Select Country</option>',
'<option ng-repeat="country in ctrl.countries" value={{country.name}}>',
'{{country.name}}',
'</option>',
'</select>',
'<select ng-if="preselect" ng-model="ngModel">',
'<option ng-repeat="country in ctrl.countries" ng-selected="ctrl.countryFromIP == country.name" value={{country.name}}>',
'{{country.name}}',
'</option>',
'</select>',
].join('')
}
})
さらに奇妙なのは、preselect をまったく使用しない単純なバージョンng-model
のディレクティブでは、が設定されることです。
例がないとちょっとわかりにくいので、Plunkr をご紹介します。 http://plnkr.co/edit/e1HPgGQlne7Q4TcNJ9XT?p=preview