Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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 使用Angular JS将HTML追加到div_Javascript_Angularjs_Dom - Fatal编程技术网

Javascript 使用Angular JS将HTML追加到div

Javascript 使用Angular JS将HTML追加到div,javascript,angularjs,dom,Javascript,Angularjs,Dom,我目前正在使用AngularJS构建一个Umbraco仪表板扩展,我想知道是否有一种方法可以将HTML附加到页面上的div中 其想法是,我想创建一种历史记录窗格,每当用户单击按钮触发对我们的web服务的web请求时,该窗格都会更新。然后,web请求返回在Umbraco中更新的每个页面以及每个页面的链接 到目前为止,我有以下几点: HTML 我假设与jQuery一样,会有某种形式的命名追加函数,但情况并非如此,所以我之前尝试过: $scope.info = $scope.info + "conte

我目前正在使用AngularJS构建一个Umbraco仪表板扩展,我想知道是否有一种方法可以将HTML附加到页面上的div中

其想法是,我想创建一种历史记录窗格,每当用户单击按钮触发对我们的web服务的web请求时,该窗格都会更新。然后,web请求返回在Umbraco中更新的每个页面以及每个页面的链接

到目前为止,我有以下几点:

HTML

我假设与jQuery一样,会有某种形式的命名追加函数,但情况并非如此,所以我之前尝试过:

$scope.info = $scope.info + "content updated";
但这会回来的

undefinedcontent updated
因此,我的问题是如何将返回的HTML输出到info div,而不删除其中已有的内容(如果有)


非常感谢您的帮助,因为这是我第一次真正尝试使用Angular。

我认为您之前尝试的问题是$scope.info在您第一次尝试附加到它时未定义。如果它是用“”或其他什么东西初始化的,我认为您使用的简单代码应该是:

$scope.info = ""; // don't leave it as undefined
$scope.info = $scope.info + "content updated";
在我看来,你应该使用一个ng repeat来列出消息

例如,如果不只是追加字符串,您可以在控制器中执行以下操作:

$scope.info = []; // empty to start
然后,您将使用某种控制器方法添加新消息:

$scope.addMessage = function(msg) {
    $scope.info.push(msg)
}
然后在视图/HTML中,您将使用ngRepeat:

<div class="info-window">
    <p ng-repeat="item in info track by $index">{{item}}</p>
</div>

{{item}

track by子句允许重复消息

更新:如果$scope.info中的项目实际上是对象,并且您希望迭代它们的属性,这是我认为您在评论中要求的,那么您可以这样做。不过,这已经超出了原始问题的范围:

<div class="info-window">
    <p ng-repeat="item in info track by $index">
        <div ng-repeat="(key, value) in item">{{key}} -> {{value}}</div>
    </p>
</div>

{{key}}->{{value}


通常,在使用Angular时不应附加HTML。相反,使用绑定在视图中动态生成输出。这篇文章可能与您有关:。如果您查看我的代码,该字段确实已绑定。但是,我不希望在下一次请求后清除内容。相反,应该更新内容。我将要运行的方法是完全独立的。你提供的文档并没有真正的帮助,因为我已经知道了其中的大部分内容。他们不只是添加原始HTML,而是使用了
ng repeat
,这更符合一般角度和灵活代码的精神。好吧,那太好了。但是,如果我在Web服务中返回的一个项目本身就是一个对象,例如:object{5118=“哥斯达黎加”,5129=“厄瓜多尔和加拉帕戈斯”,4851=“委内瑞拉”},那么我将如何循环这些项目并输出键值对?@jezzipin查看我答案中的更新。我希望你是这么问的。但是现在你开始普遍使用ng repeat了。网上有很多关于这方面的文档,这里是SO。谢谢。我一小时前就想出来了,不过谢谢你的回复。
<div class="info-window">
    <p ng-repeat="item in info track by $index">{{item}}</p>
</div>
<div class="info-window">
    <p ng-repeat="item in info track by $index">
        <div ng-repeat="(key, value) in item">{{key}} -> {{value}}</div>
    </p>
</div>