所以我有一个指令,其控制器包含一些用户信息。我有一个内部函数,它获取用户信息并尝试更新控制器范围,但在我看来,我无法访问内部函数值。
这是我的代码:
(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>
任何想法为什么?万分感谢!
答案 0 :(得分:0)
设置值后,可能没有运行摘要周期。
尝试将代码更改为:
function HeaderbarController($scope. $stamplay, $log) {
$scope.$apply(function() {
vm.userInfo = user.instance;
})