Angularjs 多模型角度定向

Angularjs 多模型角度定向,angularjs,angularjs-directive,models,Angularjs,Angularjs Directive,Models,我正在创建一个angular js键盘指令,它必须是可重用的,并且必须具有动态模板。我找到了一些教程,我能够写出这段代码 angular.module('formApp').directive('keyboard', function ($compile, $http, $templateCache, config) { var getTemplate = function (keyboardType) { var templateLoader,

我正在创建一个angular js键盘指令,它必须是可重用的,并且必须具有动态模板。我找到了一些教程,我能够写出这段代码

angular.module('formApp').directive('keyboard',
    function ($compile, $http, $templateCache, config) {

    var getTemplate = function (keyboardType) {
        var templateLoader,
        baseUrl = config.baseUrl + 'Scripts/controls/keyboard/',
        templateMap = {
            defaultKeyboard: 'default.html',
            numeric: 'numeric.html',
            //add more here
        };

        var templateUrl = baseUrl + templateMap[keyboardType];
        templateLoader = $http.get(templateUrl, { cache: $templateCache });

        return templateLoader;

    }

    var linker = function (scope, element, attrs) {

        var loader = getTemplate(attrs.type);

        var promise = loader.success(function (html) {
            element.html(html);
        }).then(function (response) {
            element.replaceWith($compile(element.html())(scope));
        });
    }

    return {
        restrict: 'E',
        scope: {
            type: '='
        },
        link: linker
    };
});
示例实现

<keyboard type="defaultKeyboard"></keyboard>
如果我只有一个文本输入,我想我永远不会有问题,因为我可以将模型绑定到尚未实现的指令,但是如果表单将有多个使用键盘指令的输入控件呢?指令如何知道要更新的模型

我正在考虑创建一个“活动”标识符,单击/选择该输入时将触发该标识符,以便指令知道要更新的模型。这在角度上是可行的还是有更好/更干净的方法

谢谢

您应该使用@它将接受指令的值。其在自定义指令中使用属性类型指令的方法是。 范围比较的可能类型

     scope: {
            type: '@type' //will take value for user as string
            type: '&type' // will except expression 
            type: '='     //match everthing
            type: '=type'   //matchies scope valiable/object name
            }

现在还不清楚这应该做什么,更不用说你的问题是什么了。由于您在指令上使用了scope:,指令的每个实例都将与其他实例隔离,因此您描述的多个输入控件(知道要更新哪些控件)并不相关,因为该指令的每次使用都无法访问任何其他输入控件。@Claies为不清楚的信息道歉。指令代码尚未完成。关于多输入控件,想象一个表单有5个文本框,底部是键盘指令。当焦点为textbox1时,当我在键盘上键入时,它将更新textbox1。说实话,这听起来太复杂了。那么,您是否正在尝试设计一个用HTML绘制的104键布局,该布局由按钮组成,这些按钮以某种方式更新指令中的模型,该指令反过来更新页面上其他地方的非关联输入中的模型?重点是什么?为什么该设备的普通键盘选项不能满足您的需要?对我来说,这听起来很难设计,甚至更难实际使用,并且不能真正解决实际问题。除此之外,angular甚至不在设计场景的范围内,我使用自定义键盘,因为我不需要所有的104个键,基本上只需要字母和数字,这就是我使用动态模板的原因。这是一个触摸设备,不是移动的,如果我能用一个普通的键盘,我不会在这里问。无论如何,谢谢。我使用“类型”来了解我想要使用什么类型的键盘布局。到目前为止,我对此没有异议。但是,当单击键盘时,我现在正在更新模型。想象一个表单有5个文本框,底部是键盘指令。当焦点是textbox1时,当我在键盘上键入时,它必须更新textbox1及其型号。与textbox2、3、4、5相同。谢谢