我的指令未从.js文件加载。您能否通过以下信息判断为何该指令未从文件加载?
我的app.js文件有
var app = angular.module('app', ['myDirectives']);
我有一个名为mydirective.js的指令.js文件
在这个文件中我有
(function () {
'use strict';
var app = angular.module('myDirectives', []);
app.directive('myMonth', function () {
return {
restrict: 'AE',
transclude: true,
//priority: 1000,
//scope: {
// month: '=month'
//},
template: '<select class="input-large" ng-model="month">' +
'<option value="1">January</option>' +
'<option value="2">February</option>' +
'<option value="3">March</option>' +
'<option value="4">April</option>' +
'<option value="5">May</option>' +
'<option value="6">June</option>' +
'<option value="7">July</option>' +
'<option value="8">August</option>' +
'<option value="9">September</option>' +
'<option value="10">October</option>' +
'<option value="11">November</option>' +
'<option value="12">December</option>' +
'</select>',
controller: function ($scope) {
}
};
});
});
在我的index.html文件中
<my-month></my-month>
你能告诉我为什么这个指令不会从mydirective.js文件加载但是它是从控制器文件加载的吗?感谢
答案 0 :(得分:2)
看起来你的语法有些错误。
<强>首先强>
var app = angular.module('app', ['myDirectives']);
您不需要为指令执行此操作。我不是Angular JS的专家,所以这可能是“正确”的方法,而不是我通常最终做到的。
下一步:强>
template: '<select class="input-large" ng-model="month">' +
应该是:
template: [ '<select class="input-large" ng-model="month">',
您还需要确保将文件包含在index.html的某个地方
这是一个有效的Plunker:http://plnkr.co/edit/xTthqwe2Yw7e9kO05ios
答案 1 :(得分:2)
在app.js文件中,更改
var app = angular.module('app', ['myDirectives']);
到
var app = angular.module('app', []);
在你的mydirective.js中,删除此
var app = angular.module('myDirectives', []);
否则你宣布你的应用两次(一次在app.js中,然后再在mydirective.js中)。