在显示

时间:2015-06-28 18:14:41

标签: ajax angularjs

如何对显示的元素执行控制器方法。 我有一个标签,我想在用户打开标签时加载数据,如果我使用ng-init,则在页面加载后加载信息。

var systemSettingsController = manageApp.controller("SystemSettingsController", [
    "$scope", function($scope) {
        $scope.tab = 1;
        $scope.initTab = function(tab) {
            $scope.tab = tab;
        };
    }
]);
var emailManagementController = manageApp.controller("EmailManagementController", function($scope, $http) {
        $scope.smtpServer = "";
        $scope.smtpLogin = "";
        $scope.smtpPassword = "";
        this.init = function() {
            $http.get("/api/EmailSettings")
                .then(function(res) {
                    var obj = angular.fromJson(res.data);
                    $scope.smtpServer = obj["Email.SmtpServer"];
                    $scope.smtpLogin = obj["Email.SenderAddress"];
                    $scope.smtpPassword = obj["Email.SenderPassword"];
                });
        };
...

我想要执行方法init(EmailManagementController)而不使用ng-init,并且当此元素显示在屏幕上时,也就是说,它的显示将更改为与none不同的属性。

1 个答案:

答案 0 :(得分:0)

尝试https://github.com/rpocklin/ui-router-tabs

基本上你有每个标签(作为视图)与其控制器相关联。

$stateProvider.state('user', {
      url:         '',
      controller: 'UserCtrl',
      templateUrl: 'example.html'
    }).state('user.settings', {
      url:         '/user/settings',
      templateUrl: 'user/settings.html'
    })

控制器在标签(视图)激活时初始化