Я изо всех сил пытаюсь понять масштаб моделей и их привязки в отношении директив, которые имеют ограниченный охват.
Я понимаю, что ограничение области действия директивы означает, что контроллер. $scope и directive.scope уже не то же самое. Однако я смущен тем, как размещение моделей в шаблоне директивы или в html влияет на привязку данных. Я чувствую, что мне не хватает чего-то очень фундаментального и двигаться дальше. Мне нужно это понять.
Возьмите следующий код (здесь сценарий: http://jsfiddle.net/2ams6/)
JavaScript
var app = angular.module('app',[]);
app.controller('Ctrl',function($scope){
});
app.directive('testel', function(){
return {
restrict: 'E',
scope: {
title: '@'
},
transclude: true,
template: '<div ng-transclude>'+
'<h3>Template title: {{title}}</h3>' +
'<h3>Template data.title:{{data.title}}</h3>' +
'</div>'
}
});
HTML
<div ng-app='app'>
<div ng-controller="Ctrl">
<input ng-model="data.title">
<testel title="{{data.title}}">
<h3>Transclude title:{{title}}</span></h3>
<h3>Transclude data.title:{{data.title}}</h3>
</testel>
</div>
</div>
Только модель обновляет {{title}}
внутри шаблона и {{data.title}}
в переходе. Почему не {{title}}
в переходе и {{data.title}}
в шаблоне?
Перемещение ввода в так называемый переход (скрипка здесь: http://jsfiddle.net/eV8q8/1/):
<div ng-controller="Ctrl">
<testel title="{{data.title}}">
<input ng-model="data.title">
<h3>Transclude title: <span style="color:red">{{title}}</span></h3>
<h3>Transclude data.title: <span style="color:red">{{data.title}}</span></h3>
</testel>
</div>
теперь означает, что только transclude {{data:title}}
обновляется. Почему бы не создать шаблон {{title}}
или {{data.title}}
, а также не перевести {{title}}
?
И, наконец, перемещение ввода внутри шаблона, как это (скрипка здесь: http://jsfiddle.net/4ngmf/2/):
template: '<div ng-transclude>' +
'<input ng-model="data.title" />' +
'<h3>Template title: {{title}}</h3>' +
'<h3>Template data.title: {{data.title}}</h3>' +
'</div>'
Теперь означает, что обновляется только шаблон {{data.title}}
. Снова, почему бы не остальные 3 привязки?
Надеюсь, что есть что-то очевидное, смотрящее мне в лицо, и я скучаю по нему. Если вы позволите мне получить это, я куплю вам пиво или дам вам несколько очков или что-нибудь еще. Большое спасибо.