Связать один раз в 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

Другие вопросы по тегам