2013-12-16 2 views
1

У меня есть dierective, который выглядит следующим образом:Установить ng-модель на имя так же, как переменная, а не ссылаться на эту переменную?

.directive('gdInputField', function() { 
    return { 
     //will only work for elements, not attributes. 
     restrict: 'E', 
     template: "<label for='{{name}}'>{{label}}</label><input name='{{key}}' id='{{name}}' type='{{type}}' ng-required='{{required}}' /><p>{{entry.1949113882}}</p>", 
     scope: { 
       label: '@label', 
       name: '@name', 
       key: "@key", 
       required: "@required", 
       type: "@type" 
     }, 
    }; 
}) 

Я желаю, чтобы добавить значение, установленное с @key как название модели для ввода поля. Если я установил ng-model='key'. Я получаю строку, которая является @key, как содержимое ng-модели.

Это, кажется, результат:

$scope={ 
    someting: @key 
} 

Что я хочу:

$scope={ 
    @key: ''; 
} 

если пользователь что-то пишет на входе @key следует обновить.

Кроме того, каково текущее имя модели, предлагающей цену или как я могу это узнать?

ответ

0

Перепишите код следующим

app.directive('gdInputField', function() { 
    return { 
     //will only work for elements, not attributes. 
     restrict: 'E', 
     template: "<label for='{{name}}'>{{label}}</label><input name='{{inputName}}' ng-model='key' id='{{name}}' type='{{type}}' ng-required='{{required}}' /><p>{{key}}</p>", 
     link: function (scope, elem, attrs) { 
      scope.inputName = attrs.key; 
     }, 
     scope: { 
      label: '@label', 
      name: '@name', 
      key: "=", 
      required: "@required", 
      type: "@type" 
     }, 
    }; 
}); 

Ключевой момент в том, что ключ должен быть двунаправленным для использования в качестве модели.

+0

Это знак равенства, который делает ключ двунаправленным? – Himmators

+0

Да. С равным знаком вы можете использовать привязку. есть хорошая статья здесь http://onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope/ – Alborz

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