2014-09-06 7 views
-1

Я хочу иметь два способа связывания внутри углового директивы Это то, что я делаюнг-модель внутри угловой директивы

angular.module('myapp',[]),directive('mydirective', function() { 
    var directive = {}; 
    directive.restrict = 'E'; 
    directive.replace = true; 
    directive.templateUrl = 'mydirective.html'; 
    directive.scope = { 
     myModel : '=', 
    }; 
    directive.controller = function($scope){ 

    } 

    directive.link = function($scope, $element, attrs) { 

    }; 
    return directive; 

мой шаблон

<div ng-model="name"> 
</div> 
<div ng-model="age"> 
</div> 

Использование директивы

Я хочу использовать имя и возраст в моем контроллере, но не хочу сопоставлять эту модель родительской модели Я хочу выполнить некоторые логики на этих моделях, а затем я хочу установить родительскую модель.

+0

Все так стремятся уценки. На это никто не может ответить. Я боролся с 5 часов – user123

+0

Что бы вы хотели сохранить в родительской модели? – Wawy

+0

Вы определяете 'myModel' в своей области. разве вы не должны использовать его, как в шаблоне? 'ng-model =" myModel.name "' –

ответ

0

Вы уже создали новую изолированную область с scope: {myModel:'='}, где myModel указывает на myModel родителя. В это время myModel является ссылкой на область. $ Parent.myModel, поэтому, когда вы изменяете scope.myModel, вы также изменяете область. $ Parent.myModel, как вы уже заметили.

Теперь вам нужна новая модель в новой области.

link: function(scope) { 
    scope.model = angular.copy(scope.myModel); // copies all values from parent and create a new object model which you then use in your template 

    scope.saveModel = function() { 
     scope.myModel.age = scope.model.age; 
     scope.myModel.name = scope.model.name; //saves values back to parent 
    } 

}

Шаблон директивы затем следует использовать в качестве model нг-модели, как:

<input ng-model="model.name" /> 
<input ng-model="model.age" /> 
<button ng-click="saveModel()">apply</button> 
+0

, в вашем коде есть разрыв между' ng-model' и 'my-model'. Если для использования 'ng-model' нужно использовать' require' для него – charlietfl

+0

@charlietfl, нет, его шаблон директивы, который имеет доступ ко всем моим определенным свойствам области, а не к шаблону, который использует эту директиву. –

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