Angularjs $watch未侦听元素中的更改

Angularjs $watch未侦听元素中的更改,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我的控制器中有以下代码: app.controller('NewSeller', function($scope, $http, $routeParams, $fileUploader) { $scope.section = $routeParams.section == undefined ? 'main' : $routeParams.section; $scope.aaaa = 'sdsdsdsd'; switch ($scope.section) {

我的控制器中有以下代码:

app.controller('NewSeller', function($scope, $http, $routeParams, $fileUploader) {

    $scope.section = $routeParams.section == undefined ? 'main' : $routeParams.section;
    $scope.aaaa = 'sdsdsdsd';

    switch ($scope.section) {
        case 'registro':
            {
                $('.seller-menu').animate({left: -230}, 300);
                $scope.section = 'primer-paso';
                break;
            }
        case 'segundo-paso':
            {
                break;
            }
        case 'main':
        default:
            {
                break;
            }
    }

    $scope.logo = null;

    $scope.$watch('common_commonbundle_standard_address.country',
            function(val) {
                $http.get(Routing.generate('states') + val).success(function(data) {
                    if (data.message) {
                        $scope.message = data.message;
                    } else {
                        $scope.states = data;
                    }
                }).error(function(data, status, headers, config) {
                    if (status == '500') {
                        $scope.message = "No hay conexión con el servidor.";
                    }
                });
            });

    $scope.functionAddCompany = function() {
        var company = {
            "name": $('#addName').val(),
            "social": $('#addSocial').val(),
            "rif": $('#addRIF').val(),
            "address": $('#addAddress').val(),
            "phone": $('#addCode').val() + '-' + $('#addNumber').val(),
            "address2": $('#addAddress2').val(),
            "number": $('#addNo').val(),
            "street": $('#addStreet').val(),
            "block": $('#addBlock').val(),
            "state": $('#addState').val(),
            "city": $('#addCity').val(),
            "zone": $('#addZone').val(),
            "ref": $('#addRef').val()
        };

        scope = angular.element($(".seller-layout.new")).scope();
        scope.section = 'segundo-paso';
    };

});
为什么,每当我加载页面时,都会调用:

得到404不是吗 发现

$scope.$watch是否应该监听selectcommon\u commonbundle\u standard\u address.Country选项更改?怎么了

这是相关的HTML代码:

<select 
       id="common_commonbundle_standard_address_country" 
       ng-model="common_commonbundle_standard_address.country" 
       required="required" 
       tooltip="País" 
       tooltip-trigger="focus" 
       tooltip-placement="right" 
       wv-def="País" 
       wv-cur="" 
       wv-err="Error!" 
       wv-req="The value you selected is not a valid choice" 
       type="text" 
       class="ng-scope ng-pristine ng-invalid ng-invalid-required">
 ...
</select>

如果您正在深入观察一个对象,您可能希望将true指定为检查对象相等性的第三个参数,即

$scope.$watch('common_commonbundle_standard_address', function (newval) {
  // .. do your stuff
}, true);
其次,您是否将ng模型=common\u commonbundle\u standard\u address.country放入您的选择中


简而言之,当您可以绑定ng模型时,为什么还要把控制器代码和jquery的东西混在一起?这不仅是毫无意义的,而且jquery触发的事件将超出angular的生命周期,因此它们不会包含在$digest cycles中。

这里是plunker,一件事是没有在作用域中定义对象,作用域将不会监视属性


Eeeew JQuery的.val Gross.wtf也是公共\公共捆绑\标准\地址吗?我在其他任何地方都看不到它。@NicolasMoise我将HTML添加到main postYea我必须同意Joe的观点,你的代码可能可以解决你的问题,但它并没有真正利用Angular。检查1我在函数中添加了true,2是的,请参阅我在main post中添加的HTML代码,3你的意思是我用jQuery处理我的控制器吗?name:$'addName'。val是jQuery