Почему я не могу сделать это в Angular.js:
document.getElementById('divid').value = 'Change Text to This';
И каков «правильный» (Angular) способ сделать это?
Почему я не могу сделать это в Angular.js:
document.getElementById('divid').value = 'Change Text to This';
И каков «правильный» (Angular) способ сделать это?
В Angular вы используете директиву ng-model
для создания двусторонней привязки данных между вашей моделью (т. е. переменной JS) и представлением (т. е. <div>
). По сути, это означает, что всякий раз, когда вы меняете данные в представлении (например, посредством ввода), это изменение будет отражаться в вашей переменной JS. Смотри ниже:
HTML:
<html ng-app="myApp">
<div ng-controller="MyCtrl">
<div>{{myVariable}}</div>
<input type="text" ng-model="myVariable" />
</div>
</html>
JS:
/* App global module */
var myApp = angular.module('myApp');
/* Define controller to process data from your view */
myApp.controller('MyCtrl', function($scope) {
$scope.myVariable = "initialValue"; // this is the variable that corresponds to text inserted in your input
});
Здесь myVariable будет иметь «initialValue» в качестве начального значения. Любые дальнейшие изменения ввода перезапишут значение этой переменной.
Также обратите внимание, что {{myVariable}}
вводит переменную данных в ваш div. Когда вы меняете значение на входе, текст div также будет изменен.
Вам нужно будет привязать контроллер к вашей разметке и инициализировать приложение Angular.
<div ng-app="myApp">
<div id="divid" ng-controller="valueController">{{value}}</div>
</div>
Затем вы можете просто определить переменную области видимости в своем контроллере.
myApp.controller("valueController", function($scope) {
$scope.value = "Hi!";
});
Лучше всего использовать директиву ng-app в HTML-теге страницы.