2013-12-07 18 views

cevap

142

Yes:

'ayırımı' kapsamı üst etki elde yerel kapsamındaki özellikler kümesini tanımlayan bir amacı, karma alır. Bu yerel özellikler, şablonlar için değerlerin taklit edilmesi için kullanışlıdır. Halk tanımı kaynağına yerel kapsamındaki özelliği bir karma:

= veya =attr - yerel kapsamı özelliği ve attr özelliğinin değeri ile tanımlanan adı üst kapsamı özelliği arasında çift yönlü bağlama ayarlayın. attr adı belirtilmemişse, öznitelik adının yerel adla aynı olduğu varsayılır. <widget my-attr="parentModel"> ve scope: { localModel:'=myAttr' } pencere tanımının verildiği şekilde, localModel widget kapsam özelliği ana kapsamda parentModel değerini yansıtacaktır. parentModel'daki tüm değişiklikler localModel'a yansıtılacaktır ve localModel'daki tüm değişiklikler parentModel'da yansıtılacaktır. Üst kapsam özelliği yoksa, NON_ASSIGNABLE_MODEL_EXPRESSION istisnası atar. Özelliği isteğe bağlı olarak işaretlemek için =? veya =?attr kullanarak bu davranışı 'dan kaçınabilirsiniz.

her sindirecek üzerine O beklenen hatayı tetiklemesi gereken kapsam özelliğini etkiler:

parentSet = parentGet.assign || function() { 
// reset the change, or we will throw this exception on every $digest 
lastValue = scope[scopeName] = parentGet(parentScope); 
    throw Error(NON_ASSIGNABLE_MODEL_EXPRESSION + attrs[attrName] + 
    ' (directive: ' + newScopeDirective.name + ')'); 
}; 

//... 


if (parentValue !== scope[scopeName]) { 
    // we are out of sync and need to copy 
    if (parentValue !== lastValue) { 
     // parent changed and it has precedence 
     lastValue = scope[scopeName] = parentValue; 
    } else { 
     // if the parent can be assigned then do so 
     parentSet(parentScope, lastValue = scope[scopeName]); 
    } 
} 
+1

mantıklı ama neden yapar değil [Bu yönerge] (http://plnkr.co/edit/ FxyDVi5JeWyC6B8TX1fk? P = önizleme) istisnayı atar. ana kapsam özelliği mevcut değil ve kapsam ataması bir '=?' kullanma DEĞİLDİR – Nikita

+7

Sadece burada değer ayarlandığında hatayı atmak gibi görünüyor: http://plnkr.co/edit/OSpaC6sPE0hY9yAeFghr?p=preview –

+0

bu resmi angularjs belgelerinde her yerde belgelenmiştir? – cebor