Javascript 能否在NG-MODEL中使用表达式?

Javascript 能否在NG-MODEL中使用表达式?,javascript,angularjs,angularjs-directive,angular-ngmodel,Javascript,Angularjs,Angularjs Directive,Angular Ngmodel,我想在NG-MODEL指令中使用一个表达式,有没有办法完成这个绑定?可以用编译之类的东西来完成吗?这是我的标记 <!DOCTYPE html> <html> <head> <title></title> <link href="Content/bootstrap.min.css" rel="stylesheet" /> </head> <body ng-controller="AppCtr

我想在NG-MODEL指令中使用一个表达式,有没有办法完成这个绑定?可以用编译之类的东西来完成吗?这是我的标记

<!DOCTYPE html>

<html>
<head>
    <title></title>
    <link href="Content/bootstrap.min.css" rel="stylesheet" />
</head>
<body ng-controller="AppCtrl">
    <div></div>
    <range min="0" max="100" model="width"></range>
</body>
</html>
<script src="Scripts/angular.min.js"></script>


<script>

var app = angular.module("pager", []);

app.run(function($rootScope){

    console.log($rootScope);    

});

angular.element(document).ready(function(){

    angular.bootstrap(document.querySelector("html"), ["pager"]);

})

app.directive("range", function ($compile) {

    return {

        restrict: "E",
        replace: true,
        scope:{

            min:"@",
            max:"@",
            model:"@"

        },
        template: "<input type='range' ng-model='{{model}}' value='0' min='{{min}}' max='{{max}}'/>",

    }

})
</script>

var-app=angular.module(“寻呼机”,[]);
app.run(函数($rootScope){
log($rootScope);
});
元素(文档).ready(函数(){
引导(document.querySelector(“html”),[“pager]”);
})
应用指令(“范围”,函数($compile){
返回{
限制:“E”,
替换:正确,
范围:{
最小:“@”,
马克斯:“@”,
型号:“@”
},
模板:“”,
}
})

ng model={{model}}给您一个错误,有没有办法让它从指令中读取model属性?这是可能的链接方式,还是我必须使用$compile来完成这一点。我希望我的指令能够在子范围中创建变量,然后将其绑定到指令生成的ng模型。我想使用指令中的“model”属性为ng模型创建变量。在本例中,我希望“width”是{{model}}表达式所在的位置。

这就是您想要的吗

如果将
@
替换为
=
,您将在控制器
$scope
上看到它(不使用表达式),请查看下面的代码并拨弄它

编辑

app.directive("range", function ($compile) {
    return {
        restrict: "E",
        replace: true,
        scope: {
            min: "@",
            max: "@",
            model: '='
        },
        compile: function () {
            return {
                pre: function (scope, elem, attrs) {
                    // The directives isolated scope
                    console.log(scope);
                    // Controller scope
                    console.log(scope.$parent);
                }
            }
        },
        template: "<input type='range' ng-model='model' value='0' min='{{min}}' max='{{max}}'/>"
    }
});
app.directive(“范围”),函数($compile){
返回{
限制:“E”,
替换:正确,
范围:{
最小:“@”,
马克斯:“@”,
型号:'='
},
编译:函数(){
返回{
前置:功能(范围、要素、属性){
//指令的作用域是孤立的
console.log(范围);
//控制器范围
console.log(范围$parent);
}
}
},
模板:“”
}
});

您为什么会有这个指令?只是为了节省一点打字时间?您不需要插值模型。移除{{}。我想让它重复使用。我不确定最好的方法是什么。老实说,我处于一个有角度的中间级别,传递变量模型并使其等于“宽度”的最佳方法是什么?这确实有帮助,但我知道模型属性的原因,我希望
model=width
绑定到控制器中的
$scope.width
,这样我就可以映射它并重新使用指令,我希望添加一个model=“height”模型的范围输入,它映射到$scope.height等等,范围:{model:&“}会更有意义。我仍在学习如何与孩子一起工作scopes@Jesse-您可以重用指令-在指令内部,它将绑定到模型,但在控制器中,
模型仍将绑定到
$scope.width
-它们都引用相同的对象,谢谢,你会成功的,试试看有什么效果best@jesse我不确定我是否明白。我的示例在controllers范围内有
宽度
绑定,这就是为什么我有log范围按钮。显示高度和宽度,以及如何与ng样式一起使用。此外,这些属性仍然可以在您的指令中访问,可以通过
链接
编译
。感谢Asok,这正是我所要做的,我只需要稍微修改一下代码,使其更具可重用性。我有大约10种不同的东西需要绑定,如宽度、高度、边界半径、颜色等。。。