2017-02-21 2 views
0

Я получил эту директивуНе удалось получить значение обратно из директивы

app.directive('countrySelect', function (Country) { 
return { 
    templateUrl: 'template/directives/countryselect.html', 
    restrict: 'E', 
    scope: { 
     selectedValue: '=' 
    }, 
    link: function (scope) { 
     Country.success(function (data) { 
      scope.countries = data; 
     }); 
    } 
} 
}); 

мой шаблон

<select chosen 
    data-placeholder="Country" 
    search-contains="true" 
    ng-model="selectedValue" 
    ng-options="name as country.name for country in countries"> 
<option value=""></option> 
</select> 

Я установил модель, чтобы быть в SelectedValue, но я только получить неопределенными назад, когда я попробуйте console.log.

Вот HTML, где я использовать директиву

<country-select selected-value="custCtrl.editForm.country"></country-select> 

и консоли регистрации переменной custCtrl.editForm.country просто дает неопределен.

Я думал, что «=» было двусторонним связыванием данных? Что мне не хватает?

Спасибо

+0

Переменная, которую вы передаете директиве, должна быть объектом. Вы констатировали, что это так? –

ответ

0

Синтаксис ng-options неправильно. 1-й термин в этом синтаксисе представляет значение параметра, и, следовательно, это значение будет отражено в ng-model. Вы указали переменную с именем name, которая на самом деле не определена. Он должен быть country.name:

ng-options="country.name as country.name for country in countries" 

(2-й country.name определяет метку параметра, то есть текст, отображаемый в списке Это не обязательно должно совпадать с 1-й срок, но часто.).


DEMO:Here is a fiddle you can play around with

в нем вы увидите, что есть часы, которые лог в консоль как от контроллера и директив всякого раза, когда изменения модели. Контроллер также отображает выбранное значение в HTML. (Я добавил $scope в контроллер для часов, но вам это не нужно в производстве.)

Смежные вопросы