2013-09-24 127 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