2

我正在为我的应用程序使用组件,并且仅在我的承诺解决时才显示模板:

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 模板中呢?我怎样才能绑定一次?

::在我们的 html 模板中使用 Angular 1.5+ 中的bind-once () 仍然被认为是“好习惯”吗?

4

1 回答 1

0

如果您在组件模板中使用 bindOnce 语法,{{ ::vm.someProp }}Angular 将在视图渲染后取消绑定该属性,并且如果您更改组件控制器中的属性,则不会更新视图。

因此,通过使用 bindOnce 语法,您消除了不必要的绑定,我认为这是“好的做法”。bindOnce 语法的使用不应该受到影响,因为我们现在在 AngularJS 中有组件

于 2018-04-11T10:22:40.637 回答