Если вы не используете. (Dot) в своих моделях AngularJS, вы делаете это неправильно?
Я помню, как видел эту знаменитую цитату из видео на AngularJS, в котором говорилось, что всегда следует использовать. (точка) в ваших моделях.
Ну, я пытаюсь следовать этому утверждению, что у меня есть
var item = {}
item.title = "Easy Access to support";
item.available = true;
item.price = 31.67;
Итак, это отлично работает, на мой взгляд, я делаю
{{ item.title }}
{{ item.available }}
Я использую точку, поэтому считаю, что это хорошо.
Но у меня есть некоторые свойства, которые я не считаю частью модели, но, возможно, я ошибаюсь. Например, у меня есть свойство, которое я использую для включения или отключения кнопки с помощью ng-disable, я ввел это с использованием точечного формата. В основном он входил так
$scope.disableButton = true;
и я использую его как
ng-disable="disableButton"......
Должен ли я сделать эту часть модели "item"? или создать другой объект js, чтобы я мог удерживать это свойство с помощью точки?
Кто-нибудь знает, насколько это приемлемо или я должен делать все (даже эти простые свойства) с .dot??
Спасибо
Ответы
Ответ 1
"Всегда должна быть точка в вашей модели" относится к ngModel
. Эта директива делает двустороннюю привязку. Если вы выполняете двустороннюю привязку к примитиву (например, булеву в вашем случае), установщик будет устанавливать его в текущей области, а не в области, на которой он определен, что может вызвать головную боль, когда у вас есть большой пользовательский интерфейс, интерфейс с большим количеством дочерних областей. Он не относится к другим директивам, таким как ngDisable
. Подробнее о данной проблеме см. это объяснение.
Пример сценария: родительская область с $scope.foo = "bar"
и дочерняя область с <input type="text" data-ng-model="foo">
. Сначала он отображает bar
, но как только пользователь изменит значение, в дочерней области будет создан foo
, и привязка будет читать и записывать это значение. Родительский foo
останется bar
. Надеюсь, что это будет хорошо.
Итак, для целей ngModel
вам может понадобиться создать объект для работы с такими проблемами связывания, но для любой другой директивы вы должны иметь регулярную логическую группировку.