2016-05-24 95 views
0

我點名的觀點:UI路由器命名視圖和NG-控制器

.state('home', { 
    url: '/', 
    views: { 
    '' : { 
     templateUrl: '/layouts/main.html', 
     controller: ['$rootScope', function($rootScope) { 
     $rootScope.css.background = "#ebeced"; 
     }] 
    }, 
    '[email protected]': { templateUrl: '/templates/nav.html' }, 
    '[email protected]': { templateUrl: '/home/menu.html'}, 
    '[email protected]': { templateUrl: '/templates/feed.html' }, 
    '[email protected]': { templateUrl: '/home/footer.html' } 
    } 
}) 

main.html看起來是這樣的(注意,NG-控制器):

<div ng-controller="baseCtrl"> 
    <div ui-view="nav"></div> 

    <div class="wrapper"> 

    <div id="menu"> 
     <div ui-view="menu"></div> 
    </div> 

    <div ui-view="main"></div> 

    <div id="footer"> 
     <div ui-view="footer"></div> 
    </div> 

    </div> 
</div> 

baseCtrl是不承認ng-model值在ui-view中的任何一個文本框中。

<input type="text" ng-model="url" ng-blur="addUrl()" /> 

baseCtrl

$scope.url = ""; //required or get error about not being defined 
$scope.addUrl = function() { 
    console.log($scope.url); //nothing??? 
} 

上午我做一個愚蠢的錯誤地方?

UPDATE: 我想我已經解決了這個問題 - 我需要定義baseCtrl作爲控制器每個視圖了。

+0

你應該寫答案,並接受它:-) – pietro909

回答

0

此塊可能是uncorrect:

'' : { 
templateUrl: '/layouts/main.html', 
//..etc 

你肯定不願透露姓名的項目應在狀態配置對象的關鍵?您可以嘗試把它differenlty:

.state('home', { 
    url: '/', 
    templateUrl: '/layouts/main.html', 
    controller: ['$rootScope', function($rootScope) { 
     $rootScope.css.background = "#ebeced"; 
    }], 
    views: { 
    '[email protected]': { templateUrl: '/templates/nav.html' }, 
    '[email protected]': { templateUrl: '/home/menu.html'}, 
    '[email protected]': { templateUrl: '/templates/feed.html' }, 
    '[email protected]': { templateUrl: '/home/footer.html' } 
    } 
}) 
+0

我敢肯定,如果有一個名爲觀點,'templateUrl'被否決。 – tommyd456