2013-09-24 126 views
3

我想了解如何從控制器加載視圖?AngularJS:從控制器加載視圖?

例子,假設:

myFile.html 
<p>{{foo}}</p> 

.controller("myCtrl", function(){ 
    $scope.html = loadFileHere("My foo", "myFile.html"); 
    console.log($scope.html); 
}); 

I'd expect the output: 
<p>My foo</p> 

這是可能的嗎?

謝謝!

+0

你想在第一個html中添加另一個html文件。 –

回答

2

我猜你正在談論加載partials?你不會真的用控制器加載視圖,雖然MAYBE你可以......我會用你的路線加載視圖。你的控制器會將你的作用域數據返回到你的局部視圖,然後你將它加載到一個ng-view div或其他東西中。因此,例如...

在app.js

(或者無論你怎麼稱呼它)假設你是myFile.html在同一目錄:

angular. 
    module('app', []). 
    config(['$routeProvider', function($routeProvider) { 
     $routeProvider. 
     when('/myFile', { templateUrl: 'myFile.html', controller: MyCtrl }). 
     otherwise({ redirectTo: '/' }); 
}]); 

那麼也許在controllers.js文件:

function MyCtrl($scope) { 
    $scope.foo = "My foo"; 
} 

,然後在myFile.html部分:

<p>{{foo}}</p> 

然後你的index.html文件可能看起來someth如:

<!doctype html> 
<html ng-app="app"> 
<head> 
    <script src="js/angular.min.js"></script> 
    <script src="js/app.js"></script> 
    <script src="js/controllers.js"></script> 
</head> 
<body> 
<div ng-controller="MyCtrl"> 
    <div class="container"> 

     <div ng-view></div> 

    </div> <!-- /container --> 
</div> 
</body> 
</html> 
+0

感謝您的期待!我想這是一個不好的做法,但我試圖避免不必在我的控制器中寫一些HTML。 – punkbit

+0

@heldrida我想我只是不明白。上面寫的控制器中沒有HTML。唯一的html是在索引和部分文件中。如果你不想使用部分內容,它可以很容易地在索引中...我只是從你的第一個問題中推斷出那是你正在尋找的東西。 – kevindeleon

+0

@heldrida也許我明白你現在在說什麼......我認爲你所說的可以通過使用指令和編譯函數來實現......看看這篇文章,看看它是否有用http:// stackoverflow.com/questions/14846836/insert-an-angular-js-template-string-inside-an-element – kevindeleon