Bộ điều khiển 'ngModel', được yêu cầu bởi chỉ thị '…', không thể tìm thấy


88

Những gì đang xảy ra ở đây?

Đây là chỉ thị của tôi:

app.directive('submitRequired', function (objSvc) {
    return {
        require: 'ngModel',
        link: function (scope, elm, attrs, ctrl) {

          // do something
        }
    };
});

Đây là một ví dụ về chỉ thị đang được sử dụng:

<input submit-required="true"></input>

Đây là văn bản lỗi thực tế:

Error: [$compile:ctreq] Controller 'ngModel', required by directive 'submitRequired', can't be found!
http://errors.angularjs.org/1.2.2/$compile/ctreq?p0=ngModel&p1=submitRequired
    at http://www.domain.ca/Scripts/angular/angular.js:78:12
    at getControllers (http://www.domain.ca/Scripts/angular/angular.js:5972:19)
    at nodeLinkFn (http://www.domain.ca/Scripts/angular/angular.js:6139:35)
    at compositeLinkFn (http://www.domain.ca/Scripts/angular/angular.js:5550:15)
    at nodeLinkFn (http://www.domain.ca/Scripts/angular/angular.js:6132:24)
    at compositeLinkFn (http://www.domain.ca/Scripts/angular/angular.js:5550:15)
    at publicLinkFn (http://www.domain.ca/Scripts/angular/angular.js:5458:30)
    at http://www.domain.ca/Scripts/angular/angular.js:1299:27
    at Scope.$get.Scope.$eval (http://www.domain.ca/Scripts/angular/angular.js:11634:28)
    at Scope.$get.Scope.$apply (http://www.domain.ca/Scripts/angular/angular.js:11734:23) <input submit-required="true"> angular.js:9159
(anonymous function) angular.js:9159
$get angular.js:6751
nodeLinkFn angular.js:6141
compositeLinkFn angular.js:5550
nodeLinkFn angular.js:6132
compositeLinkFn angular.js:5550
publicLinkFn angular.js:5458
(anonymous function) angular.js:1299
$get.Scope.$eval angular.js:11634
$get.Scope.$apply angular.js:11734
(anonymous function) angular.js:1297
invoke angular.js:3633
doBootstrap angular.js:1295
bootstrap angular.js:1309
angularInit angular.js:1258
(anonymous function) angular.js:20210
trigger angular.js:2315
(anonymous function) angular.js:2579
forEach angular.js:300
eventHandler angular.js:2578ar.js:7874

Câu trả lời:


127

Như được mô tả ở đây: Angular NgModelController , bạn nên cung cấp <inputbộ điều khiển cần thiếtngModel

<input submit-required="true" ng-model="user.Name"></input>

1
Hoàn hảo. Tôi trân trọng điều đó! Tôi sẽ đánh dấu đây là câu trả lời. Tôi có một câu hỏi tiếp theo. Tôi nên đăng câu hỏi khác hay thay đổi câu hỏi ban đầu của mình?
Shaun Luttin

Đây là thông tin tiếp theo: stackoverflow.com/questions/21807929/…
Shaun Luttin

2
Tôi đã gõ nhầm ng-modelsvà gặp lỗi này.
chovy

@Radim Kohler Tôi rất vui vì phản hồi của bạn đã thực sự giúp được ai đó đang cần, bản thân tôi cũng sắp đạt được điều này. Từ câu lệnh đầu vào ở trên, đối với thuộc tính "ng-model", tôi có thể sử dụng nối chuỗi như "{{RootObjectName +". "+ ModelName}}" không ?? !! Như mô hình của tôi trong phạm vi $ không phải là đơn giản và được tự động tạo ra trong bộ điều khiển dựa trên đầu vào từ DB
kumar Pavan

@pavankumar hãy kiểm tra liên kết này next.plnkr.co/edit/…, liên kết này ng-model="RootObject[alias]"sẽ hoạt động nếu phiên có `$ scope.RootObject = {}; $ scope.alias = "FirstName" `... thay cho bí danh, thậm chí forEach có thể cung cấp tên động
Radim Köhler

8

Một giải pháp khả thi cho vấn đề này ng-modellà cần có thuộc tính để sử dụng chỉ thị đó.

Do đó, thêm thuộc tính 'ng-model' có thể giải quyết vấn đề.

<input submit-required="true" ng-model="user.Name"></input>

Điều này đã giải quyết của tôi. Cảm ơn. Tôi nghĩ rằng chúng ta đã bỏ sót điểm rằng để kích hoạt ng-change, cần có một liên kết ng-model với phần tử.
antonD

1

Bạn cũng có thể xóa dòng

  require: 'ngModel',

nếu bạn không cần ngModeltrong chỉ thị này. Loại bỏ ngModelsẽ cho phép bạn thực hiện một chỉ thị mà không có ngModellỗi đó .


0

Tôi cũng gặp phải lỗi tương tự, trong trường hợp của tôi, tôi đã đánh vần sai lệnh ng-model như "ng-moel"

Câu sai: ng-moel = "user.name" Câu sai : ng-model = "user.name"

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.