我已经设置了3路绑定,但有一个问题我正在努力。
工作流是这样的,在数组中选择一个对象,然后将其加载到输入字段中,我可以从中更改对象并将其反映在数组列表中。
问题是,当我点击数组中的另一个对象时,只需单击新对象就可以更改对象上的数据。
这是我的代码。
html部分。
<input ng-model="data.name" value="{{data.name}}" class="nobackground">
<input ng-model="data.article" value="{{data.article}}" class="nobackground">
<input ng-model="data.filepath" value="{{data.filepath}}" class="nobackground">
控制器。
$scope.loadModel = function($id) {
var ref = new Firebase("https://---.firebaseio.com/models/"+$id);
var syncObject = $firebaseObject(ref);
syncObject.$bindTo($scope, "data");
};
列表部分。
HTML
<div ng-repeat="($id, item) in list | filter:clientFilter | filter:name "class="col-md-3" style="height: 300px;">
<a href="" ng-click="loadModel(item.$id)"><img src="img/a0320101.0001.jpg" width="250" height="250"></a>
<p>{{ item.name }} {{ item.article }} {{ item.filepath }} {{ item.published | date:"MM/dd/yyyy"}}</p>
<div>
<button ng-click="removeModel($id)">delete</button>
</div>
</div>
列表控制器。
var list = $firebaseArray(new Firebase('https://---.firebaseio.com/models'));
$scope.list = list;
答案 0 :(得分:0)
我的3向混合中缺少的是unbind部分,当单击一个新对象时,它会从范围中释放对象。
以下是我如何解决它。
var unbindModel = function(){};
$scope.loadModel = function($id) {
unbindModel();
var ref = new Firebase("https://----.firebaseio.com/models/"+$id);
var syncObject = $firebaseObject(ref);
syncObject.$bindTo($scope, "data").then(function(unbind) {
unbindModel = unbind;
});
现在每次单击该按钮时,如果之前绑定了它,则运行unbind。