[英]Is there any way to load a controller from a file into ui-router $stateProvider?
[英]Angular ui-router runs controller twice on load if it is specified in the $stateProvider
我看到我的控制器中的代碼正在運行兩次,因此在chrome dev工具的console.log窗口輸出中顯示
questions.html
<div ng-controller="questionController as vm"> </div>
questionController.js
var questionController = function($location, questionService, $env) {
var vm = this;
console.log('in the controller') // this runs twice
}
app.js
app.config([
'$stateProvider',
'$urlRouterProvider',
'$locationProvider',
function ($stateProvider, $urlRouterProvider, $locationProvider) {
var viewBase = '/apps/src/views/';
$urlRouterProvider.otherwise("/");
$locationProvider.hashPrefix(''); // get rid of ! was getting #!
$stateProvider
.state('questions',
{
url: "/questions",
templateUrl: viewBase + "questions.html"//,
//controller: "questionController"
//views: {
//
//}
});
}]
);
請注意,我在路徑中注釋掉了controller: "questionController"
,否則它會運行兩次。
我知道我去年使用過ui-router而且我總是使用控制器:沒有任何問題。
也許是一些導致bug的新版本組合?
基於我正在嘗試的答案,但沒有數據不顯示
我正在使用ui-grid
<!--<div ng-controller="questionController as vm">-->
<div ui-grid="{ data: vm }" class="grid"></div>
<!--</div>-->
注意我用ng-controller注釋了div
var vm = this
var promise = questionService.getAllQuestions();
promise.then(function(response) {
vm.myData = response;
console.log('questionCtrl promise data', vm.myData);
});
console.log確實可以吐出數據
固定
似乎我必須這樣做
路線
controller: "questionController",
controllerAs : "vm"
要么
controller: "questionController"
然后
<div ui-grid="{ data: vm.myData }" class="grid"></div>
這是因為您通過執行操作將控制器包含在$stateProvider
中以及模板本身中
<div ng-controller="questionController as vm"></div>
您可以從HTML中刪除ng-controller
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.