Verwirrt über Angularjs transcluded und isolieren Scopes & amp; Bindungen

Ich bin kämpfen, um zu verstehen, den Umfang der Modelle und deren Bindungen in Bezug auf Richtlinien, die mit geringem Umfang.

Ich, dass eine Beschränkung des Anwendungsbereichs auf eine Richtlinie bedeutet, dass der controller.$Umfang und Richtlinie.Rahmen sind nicht mehr das gleiche. Aber ich bin verwirrt darüber, wie die Unterbringung der Modelle, entweder im Rahmen der Richtlinie Vorlage oder in die html auf Daten verbindlich. Ich glaube, ich bin fehlt etwas sehr grundlegendes und zu bewegen, ich brauche, um das zu verstehen.

Nehmen Sie den folgenden code (fiddle hier: 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>

Modell nur updates {{title}} innerhalb der Vorlage, und {{data.title}} in der transklusion. Warum nicht {{title}} in der transklusion noch {{data.title}} in der Vorlage?

Bewegen die Eingabe in die transklusion so (fiddle hier: 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>

nun bedeutet, dass nur transclude {{data:title}} aktualisiert wird. Warum nicht entweder Vorlage {{title}} oder {{data.title}} noch transclude {{title}}?

Und schließlich bewegen die Eingabe in die Vorlage, wie so (fiddle hier: 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>'

Nun bedeutet, dass nur die Vorlage {{data.title}} aktualisiert wird. Wieder, warum nicht die anderen 3 Bindungen?

Ich hoffe, es ist etwas offensichtlich, starrte mir ins Gesicht und ich vermisse es. Wenn Sie mir, diese zu erhalten, werde ich Sie kaufen ein Bier, oder geben Sie einige Punkte oder einige andere solche Sache. Vielen Dank.

InformationsquelleAutor der Frage dewd | 2013-05-20

Schreibe einen Kommentar