AngularJS - 控制器不能在一个直观的工作

时间:2015-06-05 09:13:06

标签: angularjs angularjs-directive ecmascript-6 angularjs-controller

我试图获取一些变量或从指令的控制器中调用一些方法,但它不起作用。

我已经导入所有需要的文件,注入了所需的一切。 如果我使用相同的方法,但我使用templateUrl它正在工作,但这不是,我做错了什么?

这只是我代码的一部分。

class Application {

    constructor($router, alertsHandlerService) {
        this.$router = $router;
        this.routing();
        this.alertsHandlerService = alertsHandlerService;
        console.log("app construct");

    }



    routing(){
        this.$router.config(
            {
                path: '/',
                component: {'main': 'main'} // view-name:component => name.html, NameController
            }
        );
    }

    skuska(){
        console.log("skuska called");
    }
}

Application.$inject = ['$router', 'alertsHandlerService'];

export default function() {
    return {
        scope: {},
        controller: Application,
        controllerAs: 'applicationCtrl'
    };
};

我缩短的html文件

<html lang="en" ng-app="agenda" application class="no-js"> <!--<![endif]-->
<body>
{{ applicationCtrl.skuska() }}
</body>
</html>

1 个答案:

答案 0 :(得分:0)

您需要在agenda模块中注册import Application from './path/to/controller/Application.js'; import applicationDirective from './path/to/directive/application.js'; Application.$inject = ['$router', 'alertsHandlerService']; angular .module('agenda', []) // app dependencies .controller('ApplicationCtrl', Application) .directive('application', applicationDirective); 控制器。

function applicationDirective () {

    return {
        restrict: 'A',
        controller: 'ApplicationCtrl',
        controllerAs: 'ctrl'
    };
}

export default applicationDirective;

然后你就做了

class Application {

    constructor($router, alertsHandlerService) {
        this.$router = $router;
        this.routing();
        this.alertsHandlerService = alertsHandlerService;
        console.log("app construct");
    }

    routing(){
        this.$router.config(
            {
                path: '/',
                component: {'main': 'main'} // view-name:component => name.html, NameController
            }
        );
    }

    skuska(){
        console.log("skuska called");
    }
}

export default Application;

QSqlTableModel *model2= new QSqlTableModel();

model2->setTable("Save");
model2->select();

QSortFilterProxyModel *proxy1=new QSortFilterProxyModel();
proxy1->setSourceModel(model2);

QStandardItemModel *modd=new QStandardItemModel();

for (int z =0; z< proxy1->rowCount(); ++z)
   {
    for (int y =0; y< proxy1->columnCount(); ++y)
        {
        QStandardItem *item= new QStandardItem();
        item->setText(proxy1->index(z,y).data().toString());
        item->setTextAlignment(Qt::AlignCenter);
        modd->setItem(z,y,item);

        }
  }
ui->tableView->setModel(modd);

这样的事情应该正常工作(未经测试)。