所有点击字段的结果都已更改

时间:2015-05-27 12:24:02

标签: firebase angularfire

我已经设置了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;

1 个答案:

答案 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。