在 AngularJS 中思考”如果我有 jQuery 背景?非常好地解释了 Angularjs 方法优于 jQuery 方法,用于 DOM 操作。
从上面的解释中,我仍然不清楚关于 AngularJS 方法的观点,它说,不要设计你的页面,然后用 DOM 操作来改变它
通过重复答案的主要部分(上图),
jQuery方法:
对于设计/视图(其中的一部分,如下所示):
<ul class="messages" id="log">
</ul>
您操纵(如下所示)它是 DOM,以使页面动态化,
$.ajax({
url: '/myEndpoint.json',
success: function ( data, status ) {
$('ul#log').append('<li>Data Received!</li>');
}
})
但更重要的是,通过手动引用和更新它的 DOM 节点进行操作,这是一个副作用。这意味着,设计/视图的变化(ul
比如说div
)将改变 DOM 操作逻辑(to $('div#log')
)。AngularJS 方法可以在这里提供帮助。
AngularJS 方法:
视图可能如下所示:
<ul class="messages">
<li ng-repeat="entry in log">{{ entry.msg }}</li>
</ul>
和控制器代码(如下所示),不会手动引用DOM 节点并使网页动态化。AngularJS 控制器使用 model( $scope
)。
$http( '/myEndpoint.json' ).then( function ( response ) {
$scope.log.push( { msg: 'Data Received!' } );
})
这(上图)是使用 Angular 而不是 jQuery/Javascript 的主要优势
所以,
使用 AngularJS 方法,我们将指令(ngRepeat
)分配给现有的视图/设计(li
)。控制器代码li
通过 model( ) 操作 view( $scope
),不引用 DOM 节点。
问题:
关于答案的第一部分,AngularJS 如何停止设计页面(视图),然后通过模型使用控制器更改 DOM?