3

我正在使用 AngularJS 设计一个用于搜索的小应用程序。我有一个当前为空的 div,在运行一个函数后,将其替换为具有 ng-include 的 div。div 替换得很好,但 ng-include 没有加载。

我目前正在控制台中运行以下命令进行测试以查看它是否运行。我将如何让这个工作?任何帮助表示赞赏!

document.getElementById("resultsDiv").innerHTML = '<div ng-include="" src=" \'sr.html\' "></div>';
4

3 回答 3

2

阅读有关 angularjs $compile 函数的信息

于 2013-11-11T20:29:32.610 回答
1

最后,我使用的方法是用于 ngInclude 的模板示例。

http://docs.angularjs.org/api/ng.directive:ngInclude

例如,在我的控制器内部,默认情况下它将设置以下内容:

$scope.mainDivTemplate = {url: 'partials/test1.html'}

如果我想把它换成别的东西,我会调用一个看起来有点像这样的函数。

$scope.loadHome = ->
    $scope.mainDivTemplate = {url: 'partials/home.html'}
    $scope.$apply()
于 2013-11-14T20:54:27.273 回答
1

我不知道你为什么需要进行这个 JavaScript 调用,但它绝对不是“角度方式”。如果您需要有条件地包含 html,我建议您使用ng-if, ng-hide, ng-show甚至ng-switch.

你可以这样做:

// somewhere in your controller 
$scope.triggerSomeInclude = true;

// in your template
<div ng-if="triggerSomeInclude">
    <div ng-include ="'someFile.html'"></div>
</div>

另一种方法是使用指令。它们是唯一可以直接选择元素的地方(尽管即使在那里通常也不会通过 id 选择元素)。但正如我所说,很难保持最好的方法是什么,因为我不确定你想要达到什么目标。

尽管您没有使用 jQuery,但您尝试做的事情看起来非常 jQueryesque(糟糕的词),因为您选择的元素直接看似完全脱离了 angular 的 $digest 和 $compile-cycles,所以我也建议阅读这个答案: “在 AngularJS 中思考”如果我有 jQuery 背景?

于 2013-11-11T22:00:59.117 回答