【发布时间】:2015-02-15 19:14:44
【问题描述】:
后端提供了一个完全渲染的站点,在前端我希望 angularjs 通过 ajax-call /data 绑定来处理动态内容,但是如果你提供指令 ng-bind 然后 angularjs 将它们直接绑定到它们的初始值,即在任何用户操作之前为 NULL。
我找到了一个 hacky 解决方案,但我想知道是否有更好的或者另一个 js 框架可以完全满足我的要求:
https://github.com/herschel666/angular-lazy-bind
下面的例子应该有助于理解我的问题...... 一旦加载了js,初始值“hola server side”(服务器端交付)就消失了。 我希望 innerhtml/value 保持这样并保持绑定活动但惰性,以便它只会在操作后更改它 重要的是 angularjs 不重写服务器端已经写好的(redered)
<html ng-app="myApp">
<head>
<meta charset="UTF-8">
<title>Title of the document</title>
</head>
<body >
<div ng-controller="GreetingController">
<!-- this value has to stay ... but keep its binding property in order to change it afer an user action -->
<span ng-bind="greeting"> hola server side</span>
<button ng-click="update()">update</button>
</div>
</body>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js"></script>
<script type="text/javascript">
var myApp = angular.module('myApp',[]);
myApp.controller('GreetingController', ['$scope', function($scope) {
$scope.update = function (){
//do ajax calls and set greeting and other data to bind
$scope.greeting = 'Hola!';
}
}]);
</script>
</html>
【问题讨论】:
-
ngBind属性告诉 Angular 将指定 HTML 元素的文本内容替换为给定表达式的值,并在该表达式的值更改时更新文本内容。 -
我知道 ngBind 做了什么,而这正是我需要做的,修改它的行为或使用其他方法或其他框架
-
如果我理解正确,解决方案不是在控制器实例化时将 $scope.greeting 设置为“神圣的服务器端”吗?
标签: php angularjs data-binding ng-bind