我试图以多种方式做到这一点,ui-sref对我不起作用,因为数据在创建时就不确定了。
即使是编程,我也很新,但是这些日子里很有争议。
重点是,这可以真正创建一个完全自定义的$ state.go吗?
当我说完全自定义时,我怎样才能构建参数的关键字? 在: $ state.go(stateName,{key:value}
由于
angular.module('app').directive('directive', ['$state', function ($state) {
function link(scope, elements, attibutes) {
//variable data coming example
data = {
name: 'name',
params: {
key: 'id',
value: 'sidvalue'
}
}
scope.back = function (data) {
$state.go(data.name, '{' + data.params.key + ':"' + data.params.value + '"}');
}
}
return {
restrict: 'E',
link: link,
templateUrl: 'path.html'
};
}]);
编辑:********* 这是一个历史悠久的工厂从每个州收集信息,并通过我的逻辑从我的逻辑中获取它,方便的get:
angular.module('app').factory('Historic', ['$q', '$state', function ($q, $state) {
var historic = [];
return {
historic: {
push: function (key, value) {
var str, init = 'general.home';
str = {
name: $state.current.name,
params: {
key: key,
value: value
}
};
if ($state.current.name === init) {
historic = [{
name: $state.current.name,
}];
} else if (historic.length <= 0) {
historic.push({name: init});
} else if (historic[historic.length - 1].name !== str.name && historic[historic.length - 1].params !== str.params) {
historic.push(str);
}
},
get: function () {
var h = historic[historic.length - 2];
if (historic.length === 1) {
h = historic[0];
}
return $q(function (resolve, reject) {
resolve(h);
});
},
pop: function () {
historic.pop();
},
status: function () {
return historic.length;
}
}
};
}]);
为了得到它我正在使用附加了更多代码的指令。 仅发布与历史部分相关的内容。
angular.module('app').directive('directiveName', ['$state', 'fHistoric', function ($state, fHistoric) {
function link(scope, elements, attibutes) {
/*
historic setup
*/
if (fHistoric.historic.status > 3) {
scope.home = true;
}
function keycomp(data) {
if (data.params) {
key = {id: data.params.value};
} else {
key = {};
}
}
scope.back = function () {
fHistoric.historic.get()
.then(function (data) {
keycomp(data);
if (key) {
$state.go(data.name, key);
} else {
$state.go(data.name);
}
});
fHistoric.historic.pop();
};
}
return {
restrict: 'E',
link: link,
scope: {
header: '@',
state: '@'
},
templateUrl: 'path.html'
};
}]);
我真的不喜欢提出的解决方案,它正在工作但是关键值的问题让我包装了一些spaguetti代码我真的不喜欢解决id:来自键值。
接受新想法。 ;)