我是AngularJS的新手。很长一段时间我试图滥用它,就像我一直使用Javascript或Mootools这样的Javascript-Frameworks。现在我明白它不再那样了......但是我遇到了一些大问题,因为我总是用CMS生成我的HTML输出。
所以当它第一次出现时它是非常静态的......小例子:
<ul>
<li>foo <span>delete</span></li>
<li>bar <span>delete</span></li>
<li>blub <span>delete</span></li>
</ul>
现在我想,双向数据绑定意味着我可以在角度范围和控制器的帮助下生成视图,但也可以通过视图生成模型。
我可能会在那里感到困惑......所以这是我的问题。有没有办法从CMS的静态HTML输出启动模型?
我尝试过这样的事情......
<ul ng-controller="Ctrl">
<li ng-init="item[0].name=foo">{{item[0].name}} <span ng-click="remove(0)">delete</span></li>
<li ng-init="item[1].name=bar">{{item[1].name}} <span ng-click="remove(1)">delete</span></li>
<li ng-init="item[2].name=blub">{{item[2].name}} <span ng-click="remove(2)">delete</span></li>
</ul>
在我的控制器中我写了一个删除功能。但是当它删除时,它只删除了名称...... span-button仍在那里
当我将我的数据定义为javascript-array并通过Angular使用ng-repeat进行整个输出时,它确实有效......就像这样:
<ul ng-repeat="it in item">
<li>{{it.name}} <span ng-click="remove($index)">delete</span></li>
</ul>
我希望我在这里说明一点,每个人都有我的困难和问题?任何人都可以告诉我,我在那里尝试的是否可能?
答案 0 :(得分:9)
这是人们已经适应Angular和其他类似框架的常见问题。
您不再需要服务器为您呈现HTML了。您需要做的就是设置模板,并将适当的数据加载到范围中。
<ul ng-controller="Ctrl" ng-init="getMyItems()">
<li ng-repeat="item in items">{{item.name}} <a ng-click="remove($index)">delete</a></li>
</ul>
在你的控制器中你会做这样的事情
app.controller('Ctrl', function($scope, $http) {
$scope.items = [];
$scope.getMyItems = function(){
$http.get('/my/json/stuff/url').success(function(data) {
$scope.items = data;
$scope.$apply();
});
};
});
现在我知道你可能在想“但我不想单独请求获得我的JSON。这很好(可能不相关,但很好)...你需要做的就是坚持下去一个全局变量,用$ window来检索它。
答案 1 :(得分:0)
让我们的谈话代码。这是实时应用程序,显示绑定到MySQL数据的配置文件图片。当MySQL(模型)视图(HTML)中的任何变化都会更新。
app.controller('two_way_control',function($scope,$http,$interval){
load_pictures();
$interval(function(){
load_pictures();
},300);
function load_pictures(){
$http.get('http://localhost:3000/load').success(function(data){
$scope.profile_pictures=data;
});
};
这是HTML
<div id="container" ng-app='two_way' ng-controller='two_way_control'>
<div class="row" ng-repeat="data in profile_pictures">
<div class=".col-sm-6 .col-md-5 .col-lg-6">
<h4>User Say's</h4><hr>
<p>
This is a Demo feed. It is developed to demonstrate Two way data binding.
</p>
<img src="{{data.profile_picture}}">
</div>
</div>
</div>
了解详情: http://codeforgeek.com/2014/09/two-way-data-binding-angularjs/
希望它有所帮助!