模型(和视图)未通过指令内的内部函数进行更新

时间:2016-01-25 12:50:30

标签: javascript angularjs

所以我有一个指令,其控制器包含一些用户信息。我有一个内部函数,它获取用户信息并尝试更新控制器范围,但在我看来,我无法访问内部函数值。

这是我的代码:

(function() {
  'use strict';

  angular
    .module('app')
    .directive('headerBar', headerBar);

  /** @ngInject */
  function headerBar() {
    var directive = {
      restrict: 'E',
      templateUrl: 'app/components/headerbar/headerbar.html',
      scope: {
        creationDate: '='
      },
      controller: HeaderbarController,
      controllerAs: 'vm',
      bindToController: true
    };

    return directive;

    /** @ngInject */
    function HeaderbarController($stamplay, $log) {
      var vm = this;
      var user = $stamplay.User().Model;
      vm.userInfo = {};
      vm.userInfo.displayName = "blah blah";

      user.currentUser()
        .then(function() {
          //User info
          vm.userInfo = user.instance;
          $log.info("User: " + vm.userInfo.displayName);
        });
    }
    }

    })();

这是我绝望的尝试来展示价值。 “blah blah”显示得很好,但实际用户名在正确记录到函数之外时,从未进入模型和视图:

<input type="text" ng-value="vm.userInfo.displayName">
<div class="pull-left">
    User: {{vm.userInfo.displayName}} 
    User: {{vm.displayName}}
</div>

任何想法为什么?万分感谢!

1 个答案:

答案 0 :(得分:0)

设置值后,可能没有运行摘要周期。

尝试将代码更改为:

function HeaderbarController($scope. $stamplay, $log) {

$scope.$apply(function() {
    vm.userInfo = user.instance;
})