#javascript #angularjs
#javascript #angularjs
Вопрос:
Если у вас есть в представлении что-то вроде:
<span ng-model="foo.bar1"></span>
<span ng-model="foo.bar2"></span>
<span ng-model="foo.bar3"></span>
Потому что, как Angular отображает объекты, вы не можете сделать в контроллере что-то вроде:
$scope.foo.bar2 = "something";
Вместо этого вам нужно сделать:
$scope.foo = {
bar1: "value1",
bar2: "something",
bar3: "value2"
}
Итак, если мне нужно изменить только одно свойство этого объекта, мне нужно каждый раз переназначать другие значения?
Комментарии:
1. В этом нет необходимости. Если вы инициализировали объект foo значениями по умолчанию, то вы можете получить доступ к отдельным свойствам объекта
2. Это не работает $scope.foo[bar1]=»Обновленное значение»?
3. Если вы
$scope.foo
инициализировали, вы можете сделать следующее$scope.foo.bar2 = "something";
. И я предполагаю, что вы уже инициализировали это.4. Что вы подразумеваете под «как Angular отображает объекты» ?
Ответ №1:
Вообще не требуется. Все, что вам нужно сделать, это инициализировать. Ниже приведен пример кода:
В контроллере
$scope.person ={
age: 30,
sex: 'male',
name: 'hero',
occupation: 'actor'
}
В HTML
<h3>Person Details</h3>
<p><input type="text" ng-model="person.occupation"></p>
<span>{{person.name}},</span>
<span>{{person.age}},</span>
<span>{{person.sex}},</span>
<span>{{person.occupation}}</span>
Теперь, если вы продолжаете изменять значение в текстовом поле, оно будет продолжать отражаться в сведениях о персонаже ниже.
Ответ №2:
Если у вас есть:
$scope.foo = {
bar1: "bar1Value", // any initialization value for all 3
bar2: "bar2Value",
bar3: "bar3Value"
}
или просто
$scope.foo = {};
Затем вы можете сделать :
$scope.foo.bar2 = "something";
После этой инициализации, где бы вы ни захотели.