2015-08-24 174 views
0

我已經宣佈我的應用程序和控制器在單獨的文件,下面是我如何加載我的控制器HTML DOM,但它沒有顯示該消息。有人可以請指導如何實現這一目標。加載angularJs控制器

HTML:

<div id="bnProblemList"> 
    <div ng-controller="problemListCtrl" data-ng-init="init()"> 
     <div ng-view="">this is my message = {{message}}</div> 
    </div> 
</div> 

JS:

html = $j('#bnProblemList').html(); 
$compile(html)(scope); 

請讓我知道如何動態地注入或負載NG控制器的HTML。

+0

是您的'NG-app'之前設置使用'NG-controller'?您的控制器是否包含在您的索引中? –

+0

是的,我已經將ng-app設置爲html屬性.. –

+0

和我正在動態添加控制器 –

回答

1

您的控制器聲明是錯誤的。你應該做的是這樣的:

var myApp = angular.module('myApp',[]); 

myApp.controller('problemListCtrl', ['$scope', 
    function($scope) { 
     $scope.message = "This is my message :-)"; 
    } 
]); 
+0

我已經在我的主app.js中添加了這段代碼,如下所示: - –

+0

var _versionNumber =「1.0」,$ stateProviderRef; var moduleListToLoad = ['ui.router','oc.lazyLoad','ngRoute'];var enkiApp = angular.module(「enkiApp」,moduleListToLoad); enkiApp.controller('problemListCtrl',['$ scope','$ state','$ compile',function homeController($ scope,$ state,$ compile){scope ='HOME PAGE'; \t $ scope.init = function(){ \t \t控制檯。日誌( 「初始化」); \t}; $ function(function(){ \t console.log(「apply」); \t}); $ state.go('ProblemList'); }]); (文檔,['enkiApp']); }); –

0

一個正確的方法是你的控制器聲明成一個匿名函數,並把它添加到模塊。然後,你必須設置你的ngApp

Controller.js

在這裏,我們會宣佈我們的控制器,並創建一個應用模塊。然後,我們將宣佈ctrl作爲我們的控制器加入我們的app模塊。

(function(){ 

    function Controller($scope) { 

    $scope.name = 'toto'; 

    } 

    angular 
    .module('app', []) 
    .controller('ctrl', Controller); 

    })(); 

HTML

<body ng-app='app' ng-controller="ctrl"> 

    <p>My name is {{name}}</p> 

</body> 

而且不要忘了,包括你的腳本標籤

<script src="controller.js"></script> 
0

你可以嘗試像下面的例子: -

的Html頁碼:

<!DOCTYPE html> 
<html ng-app="MyApp"> 
<head> 
<title> Controller</title> 
<script src="../Js/angular.min.js"></script> 
<script src="../Js/Controller.js"></script> 
</head> 
<body> 
    <div ng-controller="MyFirstController"> 
    {{ Msg }} 
    </div> 
</body> 
</html> 

ControllerJs頁:

var MyApp=angular.module("MyApp",[]); 
MyApp.controller("MyFirstController",function($scope){ 
    $scope.Msg="Hello First Conroller"; 
}) 
0
i was able to load/ inject controller dynamically by the help of below code 

<div id="bn" ng-controller="myCtrl as vm"> 
    <div ui-view=''></div> 
</div> 

<script> 
    angular.element(document).injector().invoke(function($compile, $state) { 
     $state.go('myCtrl'); 
     var scope = angular.element($j("#bn")).scope(); 
     $compile($j("#bn"))(scope); 
    }); 
</script>