我想在角度控制器中获取和属性的值,但它是undefined
。如果它有助于一切都在MVC.net应用程序中。
简化代码:
TestCtrl.js:
angular.module('CMM')
.controller('TestCtrl', ['$scope', '$element', '$attrs', function ($scope, elem, $attrs) {
$scope.name = "mohsen";
$scope.api = $attrs.api;
alert($attrs.api);
alert(elem.data('api'));
console.log('hi, I am here');
}]);
app.js:
var app = angular.module('CMM', ['ngRoute','slServices', 'slControllers', 'ngAnimate', 'smart-table', 'ui.bootstrap']);
.....
用法:
<div id="content" ng-controller="TestCtrl">
<h3>
<input type ="text" ng-model="name"/>
<input type="text" ng-model="api" api="/sl/asdf"/>
....
答案 0 :(得分:1)
您的代码无法正常工作,因为$element
和$attrs
不可注入。如注释中所述,您可以使用指令来访问属性并从指令引用控制器。这不是真正的正确方法,但可以使它工作。
因此,您的控制器可以公开一个方法,用于为其提供指令中的API值,如下所示:
.controller("TestCtrl", function ($scope) {
this.SetApi = function (api) {
$scope.api = api;
};
})
你的指令可以引用控制器并调用方法来提供值,如下所示:
.directive("getApi", function () {
return {
controller: "TestCtrl",
link: function (scope, element, attr, controller) {
controller.SetApi(attr.api);
}
};
});
以下是一个工作示例:https://jsfiddle.net/n5t6pfcc/