angularjs形式,输入值改变程序(通过代码)未提交给控制器

时间:2014-03-07 06:16:46

标签: angularjs input

我的问题是,在通过代码或任何插件更改输入值后,未提交给控制器的新值可以访问属性的旧值。 但如果输入新值可以改变输入值!只有打字! 模板:

 <input class="form-control" id="ng-taskLineBackColor" 
       type="text" ng-model="data.preference.lineBackColor"/>

 <input type="submit" ng-click="update()"  class="btn btn-primary" value="save"/>

控制器:

.controller('taskCtrl', ['$scope', function ($scope) {

        $scope.getRef = function () {
            return //any code
        };
        $scope.save = function () {
             var newValue = $scope.data.preference.lineBackColor;
             //!!!-->newValue Contain old Value

        };
    }])

3 个答案:

答案 0 :(得分:6)

任何更改ng-taskLineBackColor值的代码都需要触发一个名为“input”的特殊事件。这将通知AngularJS

$(function() {
    $('#ng-taskLineBackColor').val('new value').trigger('input');
});

答案 1 :(得分:1)

要仅使用jQlite并且不使用jQuery,请尝试:

angular.element(document.querySelector('#ng-taskLineBackColor')).triggerHand‌​ler('input')

这是您在angular.element包装的HTML元素上提供的API:

答案 2 :(得分:0)

我为你的案例创建了工作JSfiddle。

JSfiddle

 <input class="form-control" id="ng-taskLineBackColor" 
       type="text" ng-model="data.preference.lineBackColor"/>
 <input type="submit" ng-click="update()"  class="btn btn-primary" value="save"/>

我重命名了“save”函数,在“update”中在控制器中声明。

<强>更新

function MyCtrl($scope) {
    $scope.update = function () {
        var value = $scope.data.preference.lineBackColor;
        alert("Typing value = '" + value + "'");
        $scope.data.preference.lineBackColor = "Value from code";
        var newValue = $scope.data.preference.lineBackColor;
        alert("Typing value = '" + newValue + "'");
    };
}