Связать один раз в Angular 1.5+
Я использую компоненты для своего приложения и отображаю шаблон только тогда, когда мое обещание разрешается:
var config = function ($stateProvider) {
'ngInject';
$stateProvider.state('test', {
url: '/',
views: {
'root@' : {
template: '<test></test>'
},
resolve: {
data: function(User) {
return User.get({
hash: 'test',
langue: 'en'
}).$promise;
}
}
});
};
И мой компонент с односторонним связыванием данных:
var userComponent = {
bindings: {
data: "<"
},
controller: UserController,
templateUrl: '/app/users/user.html'
};
Но что, если я хочу просто позвонить напрямую в службу, чтобы получить некоторые данные от контроллера моего компонента и отобразить их в моем HTML-шаблоне? Как я могу связать это один раз?
Это все еще считается "хорошей практикой", чтобы использовать связывание один раз (::
) в Angular 1.5+ внутри наших HTML-шаблонов?
1 ответ
Если вы используете синтаксис bindOnce в шаблоне компонента {{ ::vm.someProp }}
Angular отменит привязку свойства после визуализации представления и не обновит представление, если вы измените свойство в контроллере компонента.
Таким образом, используя синтаксис bindOnce, вы устраняете ненужную привязку, что, я думаю, является "хорошей практикой". На использование синтаксиса bindOnce не должно повлиять то, что теперь у нас есть компоненты в AngularJS