1
我有一個像這樣的僞代碼,使用單向綁定運算符(::
)我試圖查看角度是否正在監視更改。所以我不得不將它包含在input
標籤中。輸入標籤內部的model data
應該在其之前解析爲一種方式,因爲它之前爲::
。但是,如果我對輸入進行更改並單擊按鈕查看更改,它將反映日誌中的更改。但它不應該留意變化。Angularjs單向綁定綁定數據雙向
<!DOCTYPE html>
<html ng-app="app">
<head>
<meta charset="utf-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.0-beta.2/angular-animate.js"></script>
</head>
<body class="container" ng-controller="ItemsController">
<ul ng-repeat="item in ::items">
<li>
<!-- in actual code the input will not be included -->
<input type="text" ng-model="::item.name"> {{ ::item.name }}
<!-- actual code -->
<!-- {{ ::item.name }} -->
</li>
</ul>
<button type="btn" ng-click="click()">Button</button>
<script>
angular.module('app', [])
.controller('ItemsController', function ($scope) {
$scope.items = [
{name: 'item 1'},
{name: 'item 2'},
{name: 'item 3'}
];
$scope.click = function() {
for (var obj of $scope.items) {
console.log(obj.name);
}
};
})
</script>
</body>
</html>
來自angularjs doc「一次性綁定表達式的主要目的是提供一種方法來創建綁定,一旦綁定穩定,就會取消註冊並釋放資源。」現在,如果ng-model反映了這些變化,那麼它一定是在觀察變化(這是我想釋放的開銷)。因爲在我的實際AngularJS代碼中有很多模板,其中數據是從外部API獲取並綁定到模板,並且不會更改。如果在內部它仍然在觀察變化,那麼它是如何從開銷中解脫出來的? –
當您想要顯示不會超時的數據時,應該添加一次綁定,因此您只需渲染信息,然後停止觀看並縮短摘要週期。但是如果你添加一個輸入是因爲你想綁定這個值,如果不是爲什麼要使用和輸入呢? –
我不想使用輸入,因爲我已經在上面的代碼示例中的已評論代碼中說過它。我收錄的唯一原因是找出是否正在觀察變化。所以,從你的解釋我明白,如果我使用「輸入」,那麼它會監視變化,並有開銷。否則,如果我只是使用模板標記,那麼數據會在視圖中呈現一次,然後停止監視更改。我理解它嗎? –