gpt4 book ai didi

javascript - 如果在 $stateProvider 中指定,Angular ui-router 在加载时运行 Controller 两次

转载 作者:行者123 更新时间:2023-11-30 11:40:10 26 4
gpt4 key购买 nike

我看到我的 Controller 中的代码被运行了两次,因此显示在 chrome 开发工具的 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 并且我一直使用 controller: 没有任何问题。

也许一些新的版本组合导致了错误?

基于我正在尝试但未显示数据的答案

我正在使用 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 中包含了 Controller 以及模板本身

<div ng-controller="questionController as vm"></div>

您可以从 HTML 中删除 ng-controller

关于javascript - 如果在 $stateProvider 中指定,Angular ui-router 在加载时运行 Controller 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43009554/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com