簡體   English   中英

值在保存之前更改-angular js

[英]value is changing before save- angular js

我已經創建在角JS的應用,其中,即時從一個工廠,在其它是采取在兩個控制器CTRL1CTRL2得到一個JSON。 代碼工作正常,但是在結構中我已經取消並保存了按鈕,當我取消時,我需要重做以前保存的更改,當我單擊保存時,它應該更新json。

但是由於角度是雙向綁定,因此即使在單擊“保存”按鈕之前,值也會改變

我的代碼如下

html

<div ng-app="app">
    <div ng-controller="Ctrl1">
        <form>
            <br></br>{{user}}</form>
    </div>
    <div ng-controller="Ctrl2">
        <input type="text" ng-model="user.name" /><br>
        <input type="button" ng-click="save()" value="Save" />
        <input type="button" ng-click="cancel()" value="Cancel" />
    </div>
</div>

腳本

var app = angular.module("app", []);
app.factory('InitApp', function () {
    return {
        name: 'Manu',
        age: 15
    };
});
app.controller('Ctrl1', function ($scope, InitApp) {
    $scope.user = InitApp;
});

app.controller('Ctrl2', function ($scope, InitApp) {
    $scope.user = InitApp;
    $scope.save = function () {

    }
    $scope.cancel = function () {}
});

我猜想在保存之前不希望更改值。 您要做的是在控制器中復制對象並操作/保存副本。

app.controller('Ctrl1', function ($scope, InitApp) {
    $scope.user = angular.copy(InitApp);
});

這將控制器對象與服務對象斷開連接,使您在服務中擁有一個真實的來源。 取消可以只重新綁定到服務對象。

同樣,在您的提琴演奏中,您將返回屬性並在控制器中操縱服務。 您需要返回一個對象,這樣您才不會直接操作該服務並破壞它。

http://jsfiddle.net/bfelda/8btk5/45/

如果您有興趣在用戶單擊“ Cancel按鈕時喜歡回滾到原始值,則應該擁有從服務中檢索到的模型的副本,並綁定到該副本。

如果用戶單擊“ Cancel ,則應丟棄此副本,並使用原始對象重新初始化所有值。 保存對象將需要相應地更新模型,依此類推。

我不確定我是否會遵循您的問題,但這也許會有所幫助...

Angular中的模型綁定僅將值保存到控制器,而不保存到工廠。

如果希望更新工廠中的值,則需要在save方法中執行此操作(通過調用工廠服務內部的方法)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM