从templateUrl检索AngularJS指令问题模板

用户名

我刚开始在angular中创建指令,并且对此有点困惑,我想创建一个基本的迷你日历指令来选择给定月份中的日期。请求模板时,我仍然收到错误消息。有什么帮助吗?谢谢

function calendarController($scope) {
$scope.config = new Date(2000, 0, 1); } angular.module("calendar", []).directive('miniCalendar', function($parse) {
return {
    restrict: "E",
    replace: true,
    templateUrl: "../views/template.html",
    transclude: true,
    controller: mCalBinding,
    compile: function(element, attrs) {
        debugger;
        var modelAccessor = $parse(attrs.ngModel);
        return function(scope, element, attrs, controller) {
            var processChange = function() {
                // var date = new Date(element.datepicker("getDate"));
                scope.$apply(function(scope) {
                    // Change bound variable
                    debugger;
                    modelAccessor.assign(scope, date);
                });
            };
            element.datepicker({
                inline: true,
                onClose: processChange,
                onSelect: processChange
            });
            // scope.$watch(modelAccessor, function(val) {
            //     return true;
            // });

        };

    }
}; });

function mCalBinding($scope) {
//Binding of the directive
$scope.currentDate = new Date(2000, 0, 1);
$scope.prev = function(data) {

};
$scope.next = function(data) {

};
$scope.currentMonth = 'December';
$scope.currentYear = '2679';
$scope.days = [{
    day: "1"
}, {
    day: "2"
}, {
    day: "3"
}, {
    day: "4"
}, {
    day: "5"
}, {
    day: "6"
}, {
    day: "7"
}, {
    day: "8"
}, {
    day: "9"
}, {
    day: "10"
}, {
    day: "11"
}, {
    day: "12"
}, {
    day: "13"
}];
$scope.weeks = [{
    week: "1",
    days: [{
        day: "1"
    }, {
        day: "2"
    }, {
        day: "3"
    }, {
        day: "4"
    }, {
        day: "5"
    }, {
        day: "6"
    }, {
        day: "7"
    }, {
        day: "8"
    }, {
        day: "9"
    }, {
        day: "10"
    }, {
        day: "11"
    }, {
        day: "12"
    }, {
        day: "13"
    }]
}, {
    week: "2",
    days: [{
        day: "1"
    }, {
        day: "2"
    }, {
        day: "3"
    }, {
        day: "4"
    }, {
        day: "5"
    }, {
        day: "6"
    }, {
        day: "7"
    }, {
        day: "8"
    }, {
        day: "9"
    }, {
        day: "10"
    }, {
        day: "11"
    }, {
        day: "12"
    }, {
        day: "13"
    }]
}, {
    week: "3",
    days: [{
        day: "1"
    }, {
        day: "2"
    }, {
        day: "3"
    }, {
        day: "4"
    }, {
        day: "5"
    }, {
        day: "6"
    }, {
        day: "7"
    }, {
        day: "8"
    }, {
        day: "9"
    }, {
        day: "10"
    }, {
        day: "11"
    }, {
        day: "12"
    }, {
        day: "13"
    }]
}, {
    week: "4",
    days: [{
        day: "1"
    }, {
        day: "2"
    }, {
        day: "3"
    }, {
        day: "4"
    }, {
        day: "5"
    }, {
        day: "6"
    }, {
        day: "7"
    }, {
        day: "8"
    }, {
        day: "9"
    }, {
        day: "10"
    }, {
        day: "11"
    }, {
        day: "12"
    }, {
        day: "13"
    }]
}]; } /* Fragment End - directive */

HTML:

<div ng-app="calendar" ng-controller="calendarController" class="ng-scope">
    <mini-calendar type="text" ng-model="config" /> </div>

和模板:

<input type="text" ng-bind="currentDate">
<div >
    <div >
        <a>
            <span ng-click="prev">Prev</span>
        </a>
        <a>
            <span ng-click="next">Next</span>
        </a>
        <div >
            <span ng-bind="currentMonth">January</span>&nbsp;
            <span ng-bind="currentYear">2000</span>
        </div>
    </div>
    <table>
        <thead>
            <tr>
                <th ng-repeat="day in days">
                    <span ng-bind="day"></span>
                </th>
            </tr>
        </thead>
        <tbody>
        <tr ng-repeat="week in weeks">
            <td ng-repeat="day in days">
                <a ng-bind="day" ng-click="selectDate">1</a>
            </td>
        </tr>
        </tbody>
    </table>
</div>
伊兰·弗鲁默

您可能会收到此错误https://docs.angularjs.org/error/$compile/tplrt/

当在模板(或templateUrl)上声明了指令并启用了替换模式时,模板必须恰好具有一个根元素。也就是说,模板属性的文本或templateUrl引用的内容必须包含在单个html元素内。

例如,<p>blah <em>blah</em> blah</p>不仅仅是简单的<em>blah</em>等等。否则,替换操作将导致单个元素(指令)被多个元素或节点替换,这在实践中是不受支持的并且通常不需要。

我建议完全避免使用该replace标志。

现在(1.3.x)已被弃用,并且无论如何都将在下一个主要版本中将其删除:https : //github.com/angular/angular.js/commit/eec6394a342fb92fba5270eee11c83f1d895e9fb

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularJS templateUrl vs模板范围问题

来自分类Dev

在templateUrl覆盖AngularJS指令之前,检索它的内部HTML

来自分类Dev

AngularJS:指令中templateUrl的奇怪行为(模板效果很好)

来自分类Dev

AngularJS:指令中templateUrl的奇怪行为(模板效果很好)

来自分类Dev

AngularJS中的templateUrl与模板

来自分类Dev

AngularJS指令templateUrl不更新

来自分类Dev

Angular 2“模板”与“ templateUrl”问题

来自分类Dev

使用templateUrl的问题单元测试指令

来自分类Dev

AngularJS:包含指令模板

来自分类Dev

AngularJS:包含指令模板

来自分类Dev

AngularJS指令模板包含

来自分类Dev

尝试使用templateURL测试AngularJS指令

来自分类Dev

在AngularJS指令templateUrl中访问attrs

来自分类Dev

JsBin中AngularJS指令的templateUrl的演示

来自分类Dev

AngularJS-指令的templateUrl中的表单验证

来自分类Dev

在angularjs和templateUrl中使用指令

来自分类Dev

AngularJS指令获取的templateUrl无法正常工作

来自分类Dev

Laravel5.2中的AngularJs指令templateURL

来自分类Dev

AngularJs指令问题

来自分类Dev

指令的Angularjs范围问题

来自分类Dev

AngularJs指令问题

来自分类Dev

在Angular指令的外部模板(templateURL)上使用$ compile

来自分类Dev

Angular 指令中的外部模板 (templateURL) 不起作用

来自分类Dev

AngularJS指令不显示模板

来自分类Dev

AngularJS:指令中的访问模板

来自分类Dev

AngularJS指令等到呈现模板

来自分类Dev

缓存AngularJS指令的编译模板

来自分类Dev

呈现模板时的AngularJS指令

来自分类Dev

AngularJS指令不显示模板