Javascript 角度:通过代码修改范围输入时如何更新值

Javascript 角度:通过代码修改范围输入时如何更新值,javascript,angularjs,Javascript,Angularjs,我对angularJS很陌生 我有一个范围输入,可以通过代码更新它的值。我已经为这个输入创建了一个ng模型,并将它绑定到一个标签上 只要用户修改范围输入,它就可以正常工作,但当代码更新范围输入时,更新的值不会得到反映 我创作了一把小提琴: 我怎样才能让它工作 <div ng-app=''> <input type='range' min='20' max='200' ng-model="amount" id='slider'> <p ng-bind=

我对angularJS很陌生

我有一个范围输入,可以通过代码更新它的值。我已经为这个输入创建了一个
ng模型
,并将它绑定到一个
标签上

只要用户修改范围输入,它就可以正常工作,但当代码更新范围输入时,更新的值不会得到反映

我创作了一把小提琴:

我怎样才能让它工作

<div ng-app=''>
    <input type='range' min='20' max='200' ng-model="amount" id='slider'>
    <p ng-bind="amount"> </p>
    <button onclick='foo();'> Run!</button>
</div>

修改值的函数:

<script>
    var flag = true;
    function foo() {
        var sliderObj = document.getElementById('slider');
        var value = parseInt(sliderObj.value);
        if(value >= 200 || value <= 0) {
            flag = !flag;
        }
        if(flag) {
            sliderObj.value = value + 5;
        }
        else {
            sliderObj.value = value - 5;
        }
        console.log(value);
        setTimeout("foo()", 200);
    }
</script>`

var标志=真;
函数foo(){
var sliderObj=document.getElementById('slider');
var value=parseInt(sliderObj.value);

如果(值>=200 | |值请尝试以下操作:

脚本中添加-

var p = document.getElementsByTagName('p')[0];

在内部
if-else
循环之后,添加
p.innerHTML=sliderObj.value;


Angularjs绑定只能在Angularjs
控制器内部访问。普通JavaScript不识别Angularjs绑定。因此,它不会相应地更改
p
的值。

如果我理解,您可以调用foo

foo();
和默认设置值

value = 155;

在开始调用foo函数之前,我建议您阅读官方文档中的一些文章,并进行演练,这对于理解角度基础知识非常有用

回到您的代码,Angular.js工作流中有两个基本的东西您没有了解。为了控制您的模型,您应该使用。您在滑块中用作模型的
数量
变量(通过
ng model
)保留在或在您的案例中,我想(因为你的应用程序中没有任何
控制器
或/)。因此,如果你想手动更改
金额
值,你必须实际更改
$rootScope.amount
值。但是如果没有
控制器
以及附加到它的控制器,你就无法访问
$rootScope
变量

所以,首先你最好定义你的应用程序,然后将控制器连接到它,这样你就可以管理它的
$scope

下面是我的,如何做到这一点(与评论)

但是,如果要说的话,建议不要将变量保存在
$scope
中,而是保存在
控制器本身中