簡體   English   中英

Angular 1.5+組件可選單向綁定

[英]Angular 1.5+ component optional one-way binding

取自AngularJS 1 文檔

您還可以通過添加來使綁定可選? <? <?attr

對於單向綁定,可選項與非可選項有何不同?

我似乎可以在我的小提琴上找出可選版本的雙向( = )和委托( & )綁定的差異: https//jsfiddle.net/glenn/ze2wo0s1/ ,但不是單向的一。

順便說一下,聖誕快樂! 🎅🏻🎄❤️

您可以在源代碼中看到它的處理方式: https//github.com/angular/angular.js/blob/master/src/ng/compile.js#L3523

對我來說,如果你使用<? 並使綁定可選,它提前打破而不設置手表。 如果使用<並使其成為必需,它會將綁定設置為undefined並設置監視。 但是,它看起來只是看undefined ,所以在實踐中,除了對recordChanges一次調用之外沒有任何區別。 在省略所需綁定的情況下,所需的綁定將是在第一次調用時傳遞給$onChanges掛鈎的changes對象中的鍵。 但是,當您省略可選綁定時,它將不是changes對象中的鍵。

有關示例,請參閱此JSFiddle requiredBindingoptionalBinding都被省略,因此,初始化為undefined ,但requiredBindingchange對象上的鍵,而optionalBinding則不是。

使用<? 只有當該變量不存在時,控制器才能更改應該綁定的變量的值。

當控制器不存在時,可以在控制器中修改它們。 如果值傳遞給組件,則無法更改它。

無法修改非可選綁定。 如果它們不存在,則它們是undefined ,根本不能修改它們。

例如,假設你有這個:

bindings: {
  nameOptional: '<?',
  nameRequired: '<'
}

在控制器中,您不能簡單地執行$ctrl.nameRequired = 'something else'並期望視圖得到更新。 但是,您可以使用一個條件對nameOptional執行相同nameOptional :僅當name-optional未傳遞給組件時。 只有這時變量才是要改變的控制器。

為了更好地理解你可以參考這個小提琴

請注意,為簡化事物,我們使用的是一個按值傳遞的字符串。 如果要傳遞對象,則可以在正常條件下始終修改對象的屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM