Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularjs ng单击运行时标记不起作用_Javascript_Angularjs - Fatal编程技术网

Javascript angularjs ng单击运行时标记不起作用

Javascript angularjs ng单击运行时标记不起作用,javascript,angularjs,Javascript,Angularjs,ng click事件适用于设计时html控件,但不适用于运行时控件。可能是因为在这种情况下,ng click事件超出范围 HTML代码 <div ng-controller="AccordionDemoCtrl"> <label class="checkbox"> <button class="btn btn-small" ng-click="addItem()">Add Item</button> <

ng click事件适用于设计时html控件,但不适用于运行时控件。可能是因为在这种情况下,ng click事件超出范围

HTML代码

<div ng-controller="AccordionDemoCtrl">
<label class="checkbox">
                <button class="btn btn-small" ng-click="addItem()">Add Item</button>
    <input type="checkbox" ng-model="oneAtATime" />Open only one at a time</label>
<accordion close-others="oneAtATime">
    <accordion-group heading="{{group.title}}" ng-repeat="group in groups">{{group.content}}</accordion-group>
</accordion>
 <button class="btn btn-small" onclick="f()" >Click</button>
<div id=name>
</div>

添加项
一次只打开一个
{{group.content}
点击
Javascript代码

var app = angular.module('myapp', ['ui.bootstrap']);
 function AccordionDemoCtrl($scope) {

$scope.oneAtATime = true;

$scope.groups = [{
    title: "Dynamic Group Header - 1",
    content: "Dynamic Group Body - 1"
}, {
    title: "Dynamic Group Header - 2",
    content: "Dynamic Group Body - 2"
}];

$scope.addItem = function () {
    $scope.groups = [{
    title: "Dynamic Group Header - 4",
    content: "Dynamic Group Body - 4"
}, {
    title: "Dynamic Group Header - 5",
    content: "Dynamic Group Body - 5"
}];
};
}
function f()
{document.getElementById("name").innerHTML = "<button id='btn2' ng-click='addItem()'>add d item</button>";}
var-app=angular.module('myapp',['ui.bootstrap']);
函数AccordionDemoCtrl($scope){
$scope.oneAtATime=true;
$scope.groups=[{
标题:“动态组标题-1”,
内容:“动态组正文-1”
}, {
标题:“动态组标题-2”,
内容:“动态组正文-2”
}];
$scope.addItem=函数(){
$scope.groups=[{
标题:“动态组标题-4”,
内容:“动态组正文-4”
}, {
标题:“动态组标题-5”,
内容:“动态组正文-5”
}];
};
}
函数f()
{document.getElementById(“name”).innerHTML=“添加d项”;}

AngularJS通常不会解析运行时使用DOM添加到页面中的HTML,因此它不会自动捕获angular指令在页面中的使用。但是,您可以在修改页面以重新分析页面后执行显式调用。看看:

考虑一下这个

不要动态生成要解析的元素,而是在HTML中创建它。使用ng show或ng hide动态显示或隐藏节


这是一种甚至在本课程中使用的技术,它解决了一个类似的问题。

角度的重点是让您编写声明性和动态HTML。因此,您不应该强制从JavaScript生成它。虽然您可能没有使用JQuery,但这个答案可能会帮助您:这是一个糟糕的做法,您到底想做什么?我看到您正在使用accordion演示用于angular uii。我想通过更新$scope.groups variablem从web api json数据生成这些选项卡。任何人都会指出,如果您的页面不是很复杂,那么在使用AngularJS时,您不必直接修改DOM。=)考虑使用NG IF和NG重复。