0

所以我有一些 html 会根据用户所在的 questionNumber 动态加载到#panel div 中。这不是所有代码,而是我认为的所有相关代码。无论如何,<input>get 已加载到页面中,但实际上并没有做任何事情。我在这里想念什么?当 questionNumber === 1 时,我遇到了同样的问题,其中绑定的变量只是显示为{{variable}}etc

var readingController = function (scope, Romanize){
        scope.usersRomanization;
        //alert(scope.usersRomanization);
}

var app = angular.module('Tutorials', ['functions', 'tutorials']).controller('getAnswers', function ($scope, $element, Position, Romanize) {
$scope.sectionNumber = Position.sectionNumber;
if ($scope.sectionNumber === 0){
    $('#panel').html('<div ng-controller="readingController"><input ng-model="usersRomanization"></input></div>');
    readingController($scope, Romanize);
}

<body ng-controller="getAnswers">
    <div  id="panel">
    </div>
</body>
4

1 回答 1

1

如果你将 HTML 添加到 DOM,你必须告诉 Angular 编译它。这应该在指令中完成。您需要注入$compile然后执行以下操作:

var content = '<div ng-controller=...></div>';
var compiled = $compile(content)(scope);
// then put the content where you want

或者更好的是,定义一个指令并使用 a template,它将由 Angular 自动为您编译。

其他替代方案是 ng-include(它将为您编译加载的内容)和 ng-switch,它允许您将模板放入 HTML。

于 2013-03-15T17:19:58.540 回答