Javascript 布尔值在ng模型中并不处处反映;与巴塔朗进行验证,并使用控制器作为

Javascript 布尔值在ng模型中并不处处反映;与巴塔朗进行验证,并使用控制器作为,javascript,angularjs,Javascript,Angularjs,我试图理解观察者,但我遇到了一个奇怪的问题 我有这样的代码: HTML <div ng-app='dummyApp'> <div ng-controller="SampleController as sample"> <input type="checkbox" ng-model="sample.toggleValue" /> <p ng-model="sample.toggleValue"></p> <

我试图理解观察者,但我遇到了一个奇怪的问题

我有这样的代码:

HTML

<div ng-app='dummyApp'>
  <div ng-controller="SampleController as sample">
    <input type="checkbox" ng-model="sample.toggleValue" />
    <p ng-model="sample.toggleValue"></p>
    <textarea ng-model = "sample.toggleValue"></textarea>
    <p ng-model="sample.text"></p>
  </div>
</div>
console.log
工作正常,并在控制台中更改值时显示这些值。但是
toggleValue
的值和
text
的值都不会显示在浏览器中;两个
都保持为空(实际上,我希望在默认情况下p标记中有一个与ng模型中的变量无关的值(例如)。我检查了他们的类,它们是
ng pristite
ng untoucted
ng empty

但是,
按预期显示
真/假值

我没有在DOM中的任何地方使用$scope,所以我认为这不是继承的问题。 我也和巴塔朗检查了范围

我在这里不知所措


注意:

标签中没有文本,这就是它们不可见的原因。不要使用for
p
标记,这不是它的目的
ngModel
输入绑定到ModelController。如果要将值添加到
标记,请使用指令或使用
{{expression}
angular语法,如下所示

(函数(){
角度模块('dummyApp',[]);
角度.module('dummyApp')
.控制器(“采样控制器”,采样控制器);
函数SampleController($scope){
var vm=这个;
vm.text=“”;
$scope.default=“默认字符串”;
$scope.$watch('sample.toggleValue',函数(newVal,oldVal){
log({newval:newval,old:oldVal});
//vm.text+=vm.text+“;”;
});
}
})();

切换为false

{{default}}


标签中没有文本,这就是它们不可见的原因。不要使用for
p
标记,这不是它的目的
ngModel
输入绑定到ModelController。如果要将值添加到
标记,请使用指令或使用
{{expression}
angular语法,如下所示

(函数(){
角度模块('dummyApp',[]);
角度.module('dummyApp')
.控制器(“采样控制器”,采样控制器);
函数SampleController($scope){
var vm=这个;
vm.text=“”;
$scope.default=“默认字符串”;
$scope.$watch('sample.toggleValue',函数(newVal,oldVal){
log({newval:newval,old:oldVal});
//vm.text+=vm.text+“;”;
});
}
})();

切换为false

{{default}}


要显示布尔值,只需在p标记中删除ng模型,然后使用
{{sample.toggleValue}}

要显示布尔值,只需在p标记中删除ng模型,然后使用
{sample.toggleValue}

好的,我将使用
ng bind
。我希望在p标记中有一个默认值,该值与ng模型中的变量无关(例如)。如果您想要一个具有drafult值的正常
p
标记,请在控制器中定义一个
$scope。默认值
,并使用ng BindOK将其绑定到p标记,我将使用
ng bind
。我希望在p标记中有一个默认值,该值与ng模型中的变量无关(例如)。如果您想要一个具有drafult值的普通
p
标记,请在控制器中定义一个
$scope.default
,并使用ng bind将其绑定到p标记
(function() {
    angular.module('dummyApp', []);
    angular.module('dummyApp')
        .controller('SampleController', SampleController);

    function SampleController($scope) {
        var vm = this;

        vm.text = "";


        $scope.$watch('sample.toggleValue', function(newVal, oldVal) {

            console.log({newval: newVal, old: oldVal});
            vm.text = vm.text + ";";
        });

    }
})();