我是棱角分明的新手,我已经搜索了很多可以解决我问题的答案。
我有两个指令' ms-list'和' ms-view'。在特定的屏幕中,ms-list'出现在&ms; ms-view'它根据视图控制器中传递的参数通过范围显示数据到list指令。
当此屏幕第一次加载时,' ms-list'显示数据就好了。当您更改作为list指令中的参数的属性时,它不会执行任何操作。
查看指令
angular
.module('app.core')
.controller('MsViewController', MsViewController)
.directive('msView', msViewDirective);
function MsViewController($http, $scope) {
var vm = this;
//function to change the parameter's value
function changeParam(param) {
vm.selectedParam = param;
}
}
function msViewDirective() {
return {
restrict: 'E',
require: 'msView',
controller: 'MsViewController as MsView',
templateUrl: 'app/core/directives/ms-view/ms-view.html',
compile: function (tElement) {
// Add class
tElement.addClass('ms-view');
return function postLink(scope, iElement) {
// Data
};
}
};
}
在' ms-view' html文件我称之为' ms-list'指令并传递一个通过函数更改的参数' changeParam'在我上面显示的视图控制器中。
<ms-list object="MsView.selectedParam"></ms-generic-list>
列表指令
angular
.module('app.core')
.controller('MsListController', MsListController)
.directive('msList', msListDirective);
function MsListController($state, $http, $scope) {
var vm = this;
vm.params = {
"object": $scope.object,
};
//Function to fetch data according to params list
fetchData(vm.params);
}
function msListDirective() {
return {
restrict: 'E',
replace: true,
transclude : true,
scope: {
object: '='
},
controller: 'MsListController as MsList',
templateUrl: 'app/core/directives/ms-list/ms-list.html',
compile: function (tElem, tAttrs) {
tAttrs.$observe('object', function (data) {
console.log("changed value = " + data);
}, true);
// Add class
tElem.addClass('ms-list');
}
};
}
观察参数&#39;对象&#39;在内部编译功能中,每当我更改它时,它似乎都采用了正确的值。问题是我不知道如何触发列表控制器内部的功能,以便根据更改的值获取新数据。
正如我所提到的,我是棱角分明的新人,所以我不知道我的实施是否是最好的。
谢谢。